It turns out that the kernel needs a little push now that the dedicated
wifi power control module is gone ;).
Issue was only exposed if you booted KOReader while the Wi-Fi was down.
* Run grep against /proc/modules directly instead of forking to lsmod
* Revamp the CPUFreq governor choice logic
I finally figured out why the scaling on the H2O was so wonky:
Because it relies on an obscure i.MX hardware feature called DVFS,
and it gets flipped for mysterious workaround-y reasons depending on
Wi-Fi state...
* Start playing with conservative, because just staying pegged at max
clock is entirely stupid.
And DVFS is extremely conservative, it needs somewhat sustained load to
clock up...
* Take care of the DVFS switcheroo in the Wi-Fi scripts
* Unbreak Wi-Fi on Kobo w/ FX >= 4.23+
Stop relying on WIFI_MODULE_PATH, it's no longer exported by the init
script.
Fix#6500
* Resync the nickel restart script w/ upstream
Let udev handle the SD card, and actually allow nickel to see those events by re-creating the FIFO ourselves, to avoid races.
* Revamped most actions that require an internet connection to a new/fixed backend that allows forwarding the initial action and running it automatically once connected. (i.e., it'll allow you to set "Action when Wi-Fi is off" to "turn_on", and whatch stuff connect and do what you wanted automatically without having to re-click anywhere instead of showing you a Wi-Fi prompt and then not doing anything without any other feedback).
* Speaking of, fixed the "turn_on" beforeWifi action to, well, actually work. It's no longer marked as experimental.
* Consistently use "Wi-Fi" everywhere.
* On Kobo/Cervantes/Sony, implemented a "Kill Wi-Fi connection when inactive" system that will automatically disconnect from Wi-Fi after sustained *network* inactivity (i.e., you can keep reading, it'll eventually turn off on its own). This should be smart and flexible enough not to murder Wi-Fi while you need it, while still not keeping it uselessly on and murdering your battery.
(i.e., enable that + turn Wi-Fi on when off and enjoy never having to bother about Wi-Fi ever again).
* Made sending `NetworkConnected` / `NetworkDisconnected` events consistent (they were only being sent... sometimes, which made relying on 'em somewhat problematic).
* restoreWifiAsync is now only run when really needed (i.e., we no longer stomp on an existing working connection just for the hell of it).
* We no longer attempt to kill a bogus non-existent Wi-Fi connection when going to suspend, we only do it when it's actually needed.
* Every method of enabling Wi-Fi will now properly tear down Wi-Fi on failure, instead of leaving it in an undefined state.
* Fixed an issue in the fancy crash screen on Kobo/reMarkable that could sometime lead to the log excerpt being missing.
* Worked-around a number of sneaky issues related to low-level Wi-Fi/DHCP/DNS handling on Kobo (see the lengthy comments [below](https://github.com/koreader/koreader/pull/6424#issuecomment-663881059) for details). Fix#6421
Incidentally, this should also fix the inconsistencies experienced re: Wi-Fi behavior in Nickel when toggling between KOReader and Nickel (use NM/KFMon, and run a current FW for best results).
* For developers, this involves various cleanups around NetworkMgr and NetworkListener. Documentation is in-line, above the concerned functions.
* Try to make sure restoreWifiAsync eventually sends a NetworkConnected
event...
re: #5109
* Take a page from @shermp's book, and make sure wpa_supplicant managed to
connect to the AP before acquiring an IP.
Tear down WiFi modules in case of failure.
c.f., https://github.com/shermp/Kobo-UNCaGED/pull/21
* Don't let restore-wifi-async.sh enable WiFi behind our back when we're
killing it to start Nickel...
* Don't even call ping if there's no default gw
* Add a toggle to disable the C blitter in the Dev menu (depends on https://github.com/koreader/koreader-base/pull/882) (never shown if the JIT is disabled, grayed out if the C blitter is not installed)
* Fix a few sizeUtf8Text call sites that were doing a nil check in order to account for the new return type.
* Tweak statusbar handling to avoid spurious sizeUtf8Text warnings when it's hidden, and unify its behavior between being hidden via toggle, and hidden on book open (at least when all-at-once is not enabled).
* c.f., https://github.com/koreader/koreader-base/pull/882 (Android, PB, RGB32 & Legacy Kindle regression fixes).
* Enforce a known rotation on startup, to make sure we handle touch input coordinates properly.
* Proper FrontLight warmth support (thanks to @cairnsh & @pazos in #4291)!
* Fix the PageTurn buttons mapping to match Nickel's defaults
* Properly remap PageTurn buttons depending on the current rotation.
* Actually enable the Mk.7 screen refresh codepath on *all* Mk.7 devices (I'd messed up the device check...).
* Full accelerometer handling (includes a touch of refactoring regarding orientation handling in general).
* Fix insidiously broken USBMS behavior in Nickel after we exit on FW >4.8.
Fix#4291Fix#3002
* Handle OTA updates during the restart loop on Kobo/Kindle
So we can actually process OTA updates without ever truly exiting
KOReader (i.e., via the "Restart KOReader" menu entry) ;).
* Better KOA2 support
* Fix FL
* Add physical pageturn keys
* Add accelerometer support
* Possibly better NaturalLight handling on the Clara
* Fix WiFi module name used in some(?) Mk7 Kobos
* A bunch of kodev fixes
* Link to the WiKi, it's a bit more explainy ;).
* More WiFi trickery for some HW revs
* Fix Rev2 detection under KSM
That's to future-proof it, the other end of this hasn't made it into
current KSM build yet.
* Resync nickel.sh w/ current rcS
We don't have CPU, but we have PLATFORM, which is based on CPU, so,
that'll do :).
* Go back to using rmmod instead of modprobe -r
Functionally identical on current FW, will potentially avoid getting
outsmarted by modprobe if Kobo ever deigns shipping an actually usable
Linux system one day...
* Don't crash if screensavers directory doesn't exist
c.f., https://www.mobileread.com/forums/showpost.php?p=3706979&postcount=2919
* Trim unneeded stuff from startup script
I was somehow convinced I'd already done that...
While we're there, explain why we need to siphon those specific vars
* Fix a stray eth0
-> $INTERFACE
* Be very very sure we have INTERFACE set in our env
re #3936
* Make getFirmwareVersion less fragile on Kobo
Not that we actually use it right now, but, still. :D
* Use the same syntax as the PRODUCT check
* Actually implement getProductId
Instead of a stray c/p ^^
* Properly identify the Rev2/Mark7 variants of existing devices
Namely, the H2O² and Aura SE
Not that the H2O²r2 support is still broken, this just allows us to
implement it cleanyl without breaking handling of the original H2O²
re #3925
* Tweak sleeps a bit around Kobo WiFi modules...
See if that jog things up (re #3936)
* Try harder not to suspend with WiFi on on Kobos
Because otherwise, things go boom. (re #3936)
Regression after bdb82d09c1
TL;DR: That thing is race-y as hell.
The more I play with Kobos, the more it feels like the whole thing's
held together by pieces of fraying strings...
* Flag those scripts as executable in git
Somewhat irrelevant because we'll end up living on a FAT32 drive, but,
still.
* Cleanup Kobo startup script
Support KFMon >= 0.9.5
Don't siphon PRODUCT from nickel, it's exported by rcS, so fmon/KFMon
already inherit it.
Siphon NICKEL_HOME, on the off-chance nickel fails to figure that one
out for itself on restart.
Siphon LANG (This may be a terrible idea, rcS sets LANG to en_US.UTF-8,
while we set LC_ALL to en_US.UTF-8, but I don't know if nickel itself
ever updates LANG, since I have mine set to en_US also ;)).
My secret hope if that everything's working as it should and this ensures
we default to Nickel's locale on fresh installs?
Remove the extra sync on startup, both @Baskerville's fmon and KFMon are
smart enough not to do anything overly stupid, and recent FW versions
have a slightly more resilient DB anyway (rollback journal -> WAL).
This effectively shaves over a second off our startup time.
* Slimmed down the nickel restart script.
Based on current rcS
Scrapped a bucketload of irrelevant & legacy crap, since we're never
bootstrapping nickel, only restarting it.
* Update Kobo install instrcutions.
Point to KSM09, @Baskerville's fmon, and KFMon.
Deprecate legacy fmon, and as such, stop shipping a useless KoboRoot
tarball.
To avoid potential issues with USBMS.
Namely, make sure CWD doesn't point to the userstore for persitent
processes.
Make sure wpa_supplicant doesn't try to use our own OpenSSL lib, which,
again, is in the userstore area.
Properly kill our dhcp client invocation on when killing WiFi
Also, some related fixes to the startup script:
Properly kill wpa_supplicant & the dhcp client when we kill
wifi before rebooting to nickel.
For some unknowable reason, restarting nickel on exit deadlocks on my
H2O, so, do a full reboot instead, at least *that* works.
I'm probably one of the only people running KO manually anyway...