1
0
Fork 0
mayvaneday/blog/2022/september/boox.html

121 lines
28 KiB
HTML
Executable file

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>A week with the Onyx Boox Note Air - Archive - MayVaneDay Studios</title>
<link href="../../../style.css" rel="stylesheet" type="text/css" media="all">
<meta name="author" content="Vane Vander">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body class="mayvaneday">
<article>
<div class="box">
<h1>A week with the Onyx Boox Note Air</h1>
<p>published: 2022-09-13</p>
</div>
<hr>
<div class="box">
<p>Unlike other review posts, I am neither being paid by Onyx to write this nor do I have any intention of getting rid of the device after the titular week of usage. Even if, as I write this, I haven't yet found a way to do the majority of my computing on it, I have become enamored with the damn thing (well, as much as one can get attached to a device, anyway). Neither do I have an obligation to, as I was not gifted it but spent about half of my college graduation money buying it (lightly) used from some dude on eBay. And then, you know, waited two weeks for it to arrive as the mail service thought having it party in California for four days was a suitable use of my time and energy.</p>
<p>The Onyx Boox Note Air is a tablet running Android 10... with an e-ink screen! But it's not an e-reader, it's a tablet! ...With an e-ink screen. But don't call it an e-reader! Because it has a... Okay, you get the point. The device is about the same size as a standard iPad with a thick black bezel flush with the screen. The actual screen is off-center because on one side is a thick faded-blue magnetic strip about a centimeter and a half wide. Dragging the flat end of the bundled stylus will either wake the tablet up or put it to sleep (although this only worked about half the time) and also provides a sensor for use with certain protective covers to put the tablet to sleep when the lid is closed (although this worked less than half of the time). The device has no camera, but it <em>does</em> have a speaker, a microphone, and a Bluetooth chip for connecting to keyboards and wireless headphones and other devices.</p>
</div>
<hr>
<div class="box">
<h2>First step: killing the Chinese analytics</h2>
<p>Just because the device requires you to hop through some hoops to get Google Play working (if you want it, which I don't) doesn't mean that out-of-the-box the device isn't constantly phoning home. Just, this time, you're mainly being watched by Onyx (a Chinese company) as well as the few core components of Android that call out to Google even when you don't have the Google Play framework installed.</p>
<p>A person braver than I am wrote <a href="https://web.archive.org/web/20220913204217/https://blog.tho.ms/hacks/2021/03/27/hacking-onyx-boox-note-air.html">rooting instructions</a> for the device a few years ago. I won't duplicate them in full here, but it essentially entails grabbing a copy of the firmware update from the official Onyx servers, <a href="https://web.archive.org/web/20220913204340/https://github.com/Hagb/decryptBooxUpdateUpx">decrypting it</a> to retrieve a copy of <code>boot.img</code>, then putting it through <a href="https://web.archive.org/web/20220913204510/https://github.com/topjohnwu/Magisk">Magisk</a>. There is one addition to the post I'd like to add, however: <strong>the download link for the system firmware is broken</strong>. Thankfully the firmware decryption tool linked above has a GitHub issue with a <a href="https://archive.ph/zqDG4">working method</a> <!-- http://github.com/Hagb/decryptBooxUpdateUpx/issues/2 -->
for getting current ones. For example, <a href="http://data.onyx-international.cn/api/firmware/update?where=%7B%22buildNumber%22:0,%22buildType%22:%22user%22,%22deviceMAC%22:%22%22,%22lang%22:%22en_US%22,%22model%22:%22NoteAir%22,%22submodel%22:%22%22,%22fingerprint%22:%22%22%7D">this is the one I used for my Note Air</a>. If you're attempting this, if you're lucky, your browser will prettify the resulting JSON. The relevant link to the <code>update.upx</code> file is in the element <code>downloadUrlList</code>. There <em>should</em> only be one link in the list.</p>
<p>I nearly had a panic attack at the end of the instructions because, after flashing the new <code>boot.img</code> to the device, I forgot to run <code>fastboot reboot</code> before unplugging it. The tablet was stuck on the Onyx logo and wasn't responding to me pressing the power key, which is the only hardware key on the device. Because it's an e-ink device, there is no power cost to maintaining a single image on screen, so unlike a normal Android device where the screen can just turn off when forced to power down, there was no visual indicator that the damn thing was rebooting. To be fair, though, I was using a <code>boot.img</code> from the September update with the rest of the firmware being from April. Did I brick it? Did my wife bonk the universe on the head and demand it make the tablet reboot and function as normal like nothing had ever happened? Did I just get impatient and not give it enough time for the e-ink display to update? I suppose I will never know, because after a few minutes it started working again like nothing had ever happened.</p>
<p>It turns out that there was no reason for me to go through all the trouble anyway. Part of why the Note Air has such ridiculously long battery life is because it is <em>extremely aggressive</em> about killing background processes. Unlike on my other Android devices, where if I press "close all running apps" the ones running in the background (like my firewall) stay running, the Note Air will kill <em>everything</em> not in the foreground when going to sleep, or everything period when prompted to in the "recently used apps" screen. Including AFWall+, the root-required firewall I rooted the device to run in the first place! This happens even when said apps have battery optimization turned off and an option titled "If the app is playing in background, do not freeze it" enabled. This means, unless you're diligent about turning off the WiFi radio every time you put the tablet to sleep and watch the notification bar like a hawk, your firewall will quickly fail without notification and your data will probably get sent to China. (It will also turn itself all the way off by default if you leave it in sleep mode for more than a few hours, but you can disable automatically turning off WiFi on boot in the settings, so this isn't a privacy problem.)</p>
<p>All in all, it doesn't matter firewall-wise if you choose to root the device or not. And AFWall+ refuses to let the user switch to light mode unless you pay for the premium version, so I can't see any of the buttons to use the app.</p>
<p><img src="../../../img/boox_firewall.png" alt="screenshot of NoRoot Firewall" class="big"/></p>
<p>A funny discovery: although the app displays as monochrome given the fact that it's, well, e-ink, screenshots are still taken in color. Very surreal to look at when I pull them off the device.</p>
</div>
<hr>
<div class="box">
<h2>Books</h2>
<p>When I got my first e-reader sometime in 2010, the mainstream sentiment of e-ink displays (as far as I could tell, being only ten years old) was that they were <em>maybe</em> good for reading and awful for everything else. The Note Air to me is the opposite: it's great for drawing and running Markor for writing (more on that later), but as far as actually reading books on it goes... it doesn't feel right. Even if I install KOReader, which is what I'm used to as it's what I use on my Kobo, the massive size of the screen is a major distraction.</p>
<p><img src="../../../img/boox_size.jpg" alt="a Kobo Libra H2O on top of an Onyx Boox Note Air" class="big"/></p>
<p>Actually getting books onto the device is just as much of a pain point. Like the Nook Glowlight Plus (my second e-reader) and unlike my Nook 1st Gen (my first device, and also the one that ZeroNet users kept harassing me over) and Kobo Libra H2O (third / current), the Note Air presents itself to the computer as an MTP device. It identifies itself as <code>SDM636</code> (which brings up <a href="https://web.archive.org/web/20220913204948/https://www.notebookcheck.net/Qualcomm-Snapdragon-636-SoC.300988.0.html">Snapdragon CPUs</a> when you look it up) in a file manager, although <code>jmtpfs</code> claims it's a Google Pixel:</p>
<pre>
lethe@arval ~&gt; jmtpfs /mnt/mtp
Device 0 (VID=18d1 and PID=4ee1) is a Google Inc Nexus/Pixel (MTP).
Android device detected, assigning default bug flags
</pre>
<p>After installing updates, there is about 23 GB available for user storage.</p>
<p>Normally, when I want to put my e-book library on a device, I just use Unison to one-to-one copy the entire Calibre folder to said device, barring a few gigabyte-large PDFs that I wouldn't be able to comfortably read on such a small screen anyway. (On my phone, I use Syncthing so I don't have to mess with MTP.) This way I can keep my KOReader highlights and annotations, which are made in a plaintext file in the same directory as each book, across devices instead of hoping that whatever convoluted database each device uses in its own preloaded reading app doesn't crash one day or can even be extracted and backed up in the first place. However, the Note Air's MTP implementation threw an "input/output error" exception each time I tried to run Unison. (Syncthing isn't an option due to the aforementioned aggressive battery saving.) After a few times, I gave up and just opened Calibre and selectively copied over a few books I thought would display well on the large screen.</p>
<p><code>.epub</code> files in NeoReader, the Boox built-in reading app, have severe rendering errors as shown below. I can tell this is an issue with NeoReader (top) and not with the file because it renders properly in KOReader (bottom).</p>
<p><img src="../../../img/neoreader_vs_koreader.png" alt="Screenshots of NeoReader and KOReader displaying the same book" class="big"/></p>
<p>PDF files, because of the large screen, display beautifully. NeoReader is less intuitive than KOReader: in order to pull up the main menu to adjust settings like contrast and pagination, one has to know to press on the button on the floating sidebar with three dots and lines that looks like it should bring the user to the Table of Contents instead. (You can, in fact, go to the Table of Contents in this menu, but it's not the first page one sees.) The floating sidebar also has functions to, among others, disable hand touches (to prevent accidentally swiping pages when making annotations with the stylus), adjust page zoom, open multiple documents at once, and start reading the book out loud using the built-in TTS engine. One essential feature in KOReader that I did not find in the NeoReader document settings is page margin cropping. Granted, this is more useful on smaller screens to make the text zoomed in enough to be legible, but it is still a nice feature to have.</p>
<p><strong>NeoReader will directly write your annotations into PDFs</strong> (unlike KOReader which can be configured to just keep them in the plaintext annotations file for that book) so keep a clean copy of any documents you want to mark up.</p>
</div>
<hr>
<div class="box">
<h2>Writing</h2>
<p>The main reason why I got a Boox tablet instead of the Kobo Elipsa, the other device I was considering at the time, was because I knew I wouldn't have to wait a gazillion years for some random person on Mobilereads to release a kernel patch to make the Bluetooth radio work with more than just headphones and another person to make a notepad program that would accept keyboard input instead of just reimplementing an on-screen keyboard like KOReader does. (Seriously, why can't I use the system keyboard in KOReader on Android? I could type a hell of a lot faster on there for searching in my books...)</p>
<p>The Note Air has four refresh modes: "Normal", "Speed", "A2", and "X". "Normal" functions just like one would expect an e-link screen to, with often full-screen flashes and a slow refresh rate. The others enable an increasingly higher framerate for running apps at the expense of visual snow and heavy ghosting (when the content on the e-ink screen changes without doing a full flash first, leaving visual artifacts of the previous screen) to the point where "X" mode has near-LCD framerates but you can still visibly see deleted words on-screen when writing.</p>
<p>On Android devices I use <a href="https://web.archive.org/web/20220913205244/https://f-droid.org/en/packages/net.gsantner.markor/">Markor</a> for writing. Markor works well on the Note Air in "X" mode, with one caveat: one should immediately go into the app settings and disable automatically changing the app theme based on the time, as I forgot to do one evening while writing and suddenly couldn't see what I was doing because it had switched to dark mode. There is also an annoying bug where moving large chunks of text will occasionally make the bottom half of the screen refuse to display anything, but this also happens on "normal" Android devices and isn't the Note Air's fault. Unlike those "normal" devices, though, the Note Air only uses about 1-2% battery charge for each hour of writing, so if not for gaming I could probably get away with only charging the tablet once every few weeks. Most other Note Air users recommend the Logitech K480 for a Bluetooth keyboard, which I was happy about since I already own one. The tablet fits perfectly into the groove at the top. (The rest of the case dangles pretty awkwardly, though.) I've had the same AAA batteries in it as when I got it in 2018 (possibly earlier...?) so the two are a hell of a lot more energy-efficient than your standard laptop.</p>
<p>Writing in full-screen is a pleasure, although apparently neither KOReader nor NeoReader support split-screen mode on the Note Air, so I can't have a reference book open on the side while writing. The built-in dictionary refuses to download anything, likely related to the analytics servers being blocked in the firewall, so instead I installed <a href="https://web.archive.org/web/20220913205323/https://f-droid.org/en/packages/itkach.aard2/">Aard 2</a> and sideloaded a copy of Wiktionary.</p>
<p>There are already myriad videos of people typing on Boox tablets, so I won't subject you to my lack of a tripod or footage of my cluttered desk.</p>
<p>Because of the aggressive battery optimization, Syncthing isn't an option for getting text files off the device either, so I had to set up a <a href="https://web.archive.org/web/20220913205349/https://github.com/micromata/dave">WebDAV server</a> and dig out an old pirated copy of FolderSync Pro with the license verification stripped out to manually push files off the device once I was done writing them.</p>
</div>
<hr>
<div class="box">
<h2>Gaming</h2>
<p>I suppose this wouldn't be a post worthy of this website if I didn't try to make the device do something it plainly wasn't designed to do.</p>
<p>The Note Air is an Android tablet, after all, which means it's technically capable of running most Android games you can throw at it. Not necessarily at a <em>good</em> framerate, or even a <em>playable</em> one. Game support largely depends on how color-reliant the game is (since the device is e-ink and therefore grayscale) and how "flashy" and animation-laden it is. Games that don't have constant animations should be ran in "A2" mode.</p>
<p>Webkinz works! (Don't laugh. My account is fourteen years old. Do you know how many hundreds of dollars my mother and grandmother have poured into the damn thing over the years?) I can log in and navigate my house without too much ghosting, although the first loading screen makes the backlight on the left side of my screen flicker for whatever reason. The only minigame I tested in the arcade was Tile Towers ("what if Mahjongg, but for five-year-olds?") which is the only one I play nowdays anyway. Surprisingly playable, considering it's such a color-reliant game, but with heavy ghosting. Tiles jittered for two or three frames when disappearing as opposed to the smooth shrinking they do on LCD screens, but the ghosting was barely noticable and the tiles remained legible. The button to exit the arcade was unresponsive and took about twenty tries (I counted) before it finally let me go back to my house. Webkinz alone was responsible for eating about 20% of my battery alone during the week, and I had barely used it for twenty minutes or so. Those Til<del>t</del>e<del>d</del> Towers, man... <!-- HA AHAHAAHAHAHA HAHAHA FORTNITE JOKE --></p>
<p>Duolingo... doesn't work so well. The first thing I did was go to <code>Profile &gt; Settings &gt; Accessibility</code> and disable three options: listening exercises, animations, and haptic feedback. I also turned dark mode off in hopes of making the text more legible. Even then, the fast pace of the app doesn't lend itself well to e-ink, and exercises were slow to load even after I blocked all ad networks in the firewall to reduce bandwidth.</p>
<p>Given that Bluetooth keyboards worked earlier, and so do headsets (in the next section of this post), I didn't see a reason why a gamepad wouldn't. My phone sees it as essentially just a weird keyboard... but it refused to appear at all in the Bluetooth pairing menu. A wired controller via a USB-C to USB-A adapter didn't work either: the Note Air recognized that <em>something</em> was plugged into its singular port, but neither <a href="https://f-droid.org/en/packages/com.swordfish.lemuroid/">Lemuroid</a> nor a pirated copy of "My OldBoy!" recognized it as a valid controller. A shame, really. It would have been quite fun to watch old monochrome Game Boy games chug along in "X" mode, battery life be damned.</p>
</div>
<hr>
<div class="box">
<h2>Music</h2>
<p>The last e-ink device I had with the ability to play music was my good old Nook 1st Gen. Back in 2010 or so, I had a flip phone I could have put MP3s on... but the jack was too small for the shitty headphones I'd stolen from school to fit. The Nook had a 3.5mm headphone jack on the bottom of the device, which unfortunately was a millimeter off from where the hole for the charging port in the case I was using was, so I had to fiddle with the device a bit to not get the damn thing to disconnect at the slightest jostle. The sound quality was <em>atrocious</em>, and there was no album or playlist support, and despite the massive gray square on the left side of the screen implying a lack of cover art, I never saw it detect any cover art on any file I threw at it.</p>
<p>The Note Air does not have a headphone jack. The only port on the device is one USB-C on the side of the device, right by the power button (the only physical button). I had to look up how to re-pair my wireless earbuds (Sony WF-1000XM3) since I only ever use them with my phone. (Not <em>repair</em>: they still work perfectly fine. Although the Note Air makes for a good PDF manual reading experience...) The Note Air has a built-in speaker, as I learned very quickly when unboxing it for the first time and getting slammed in the head with the default Android notification sound at full volume, but I'd like to <em>not</em> keep the rest of my family up at midnight when I'm having one of my manic programming sessions, and also I have enough going on in my life without someone breaking down my door to interrogate me about my taste in music. The earbuds pause the device when one or both are taken out of my ears as expected. I couldn't find equalizer settings in the Note Air's system settings, so I had to download Sony's official headphone companion app to get equalizers and ambient sound and noise cancelling working. I only wish it had landscape support as well. Do you think Sony sells a neck straightener after I have to crane my head ninety degrees to get the right equalizer selected?</p>
<p>The Note Air has a built-in music player. It's very... bare-bones. The album art is displayed in a small circle centered near the top of the screen. Below that are some player buttons and the title and performing artist and the progress bar to show how far you are in the currently playing song. The bottom half of the screen is taken up by a <em>long, long</em> list of all the songs on the device. I couldn't find a way to change the view, such as to <em>group</em> by artists or albums. One can put together playlists, but that entails a lot of scrolling and hoping that the low framerate of e-ink doesn't make you over-scroll past what you want.</p>
<p><img src="../../../img/boox_music.png" alt="Boox built-in music player" class="big"/></p>
<p>I also grabbed a MIDI player from Aurora Store, an open-source frontend for Google Play that allows one to download (free) apps without a Google account. (There is a <a href="https://web.archive.org/web/20220913205459/https://f-droid.org/en/packages/com.xperia64.timidityae/">MIDI player on F-Droid</a>, but it's very unpolished and doesn't support automatic pausing on headset removal.) It was at this point I had to find where in system settings the sleep timeout was, as the Note Air kept going to sleep from "inactivity" while I was trying to transfer soundfonts to it over Bluetooth and thus cancelling all pending transfers. Once I got everything transferred, it worked pretty much the same as it does on my phone, just at a choppier framerate.</p>
<p>Compared to gaming, provided that one isn't constantly fiddling with the screen and you remember to turn the backlight off, battery life for listening to music is about the same, maybe <em>slightly</em> worse, as while writing. Again, the Note Air <em>really</em> doesn't like apps running in the background, so if you decide to multi-task, be careful about not accidentally killing whatever music app you use.</p>
</div>
<hr>
<div class="box">
<h2>Termux</h2>
<p>I was planning on going the whole week on a single charge, but then I woke up the Tuesday after the device arrived, a whole week later, to find that NeoReader had somehow awoken itself during the night and drained the last 30% remaining. (<a href="../../../img/hidden/ItHurts.png" title="the Zippo leaks were a lie and I'm Big Mad about it">A bad omen, maybe...?</a>)</p>
<p><a href="https://web.archive.org/web/20220913205551/https://github.com/termux/termux-app">Termux</a> is an enhanced terminal app for Android. Unlike others, it features what effectively amounts to a Linux chroot inside. With the use of plugins, unlike a normal chroot, it can also access the rest of the device's file system and <a href="https://web.archive.org/web/20220913205616/https://f-droid.org/en/packages/com.termux.api/">Android-specific APIs</a>.</p>
<p>Termux's default theme is too dark to display properly on the Note Air, so I had to install a plugin to be able to change the theme. Themes are changed by doing a tap-to-hold anywhere on the screen and pressing <code>More &gt; Style</code>. But when using my finger to tap, the "More" button goes away far too quickly for me to tap it again! The button stays around longer when using the stylus. Even after changing the theme to light, the text was still too low-contrast to be comfortably legible, so I had to use the "E-InkCenter" settings in the Note Air's notification area to forcibly "bleach" the terminal background and make the text bold and switch to the "A2" refresh mode to avoid large chunks of lag. Elinks refused to go into monochrome mode even when I toggled "document colors" to off, so I had to use Lynx as a terminal browser for testing instead.</p>
<p><img src="../../../img/boox_lynx.png" alt="Lynx displaying Cheapskate's Guide homepage" class="big"/></p>
<p>Here I discovered that my Bluetooth keyboard has a strange quirk: when I swipe up from the bottom left side of the screen, the device opens the recent apps drawer as normal. But when I press the dedicated "recent apps" button on my keyboard, it goes to that menu for a split-second and then dumps me in the homescreen instead.</p>
<p>The <a href="https://web.archive.org/web/20220913205644/https://github.com/ipfs/kubo">IPFS reference daemon</a> took a little under two minutes to compile. Unfortunately I was not able to test it much further because it refused to resolve any IPNS domains I threw at it. Still, only two minutes to compile means the device is <em>much</em> more powerful than my Galaxy Note 3, which takes about six minutes to compile the same code. (It probably doesn't help that the Note 3 is 32-bit <code>arm</code> and the Note Air is apparently 64-bit <code>aarch64</code>.)</p>
</div>
<hr>
<div class="box">
<h2>Surfing the web</h2>
<p>The Nook 1st Gen had a browser almost exclusively controlled by the bottom LCD screen where the "previous page"/"next page" buttons could move the viewport up and down. (I suspect the reason it's currently bricked is because I messed up <a href="https://web.archive.org/web/20220913205719/https://www.flowkode.com/2014/03/28/adding-root-ca-certificates-to-android-2-2/">adding TLS certs to the ancient keystore</a>.) The Nook Glowlight Plus didn't have an official browser, but using ReLaunchX after rooting revealed that the AOSP browser was still in the system, albeit constantly crashing and with almost no features other than an address bar. All known Kobo devices have a <a href="https://archive.ph/g4aTt">hidden browser in the Beta menu</a><!-- https://help.kobo.com/hc/en-us/articles/360017763733-About-Beta-Features -->
, but if you're not signed in, the system will claim it can't find a valid Internet connection. Needless to say, browsing the web doesn't seem to be a top priority for e-readers to support (if at all) but it's still a nice feature to have.</p>
<p>The Note Air comes with a built-in browser, "NeoBrowser", which is nothing more than a reskin of Chrome with some font resizing options in the address bar. Only the address bar is optimized for e-ink displays; the rest of the app is literally the same as stock Chrome. Funnily enough, the previous owner forgot to wipe his browser history before shipping it to me... Hello, Hacker News!</p>
<p><a href="https://web.archive.org/web/20220913075603/https://f-droid.org/en/packages/info.plateaukao.einkbro/">EinkBro</a> is specially designed for devices like the Note Air, although I had to go into E-InkCenter and adjust the screen DPI so that the interface buttons weren't miniscule. It works well with the "page up/down" floating buttons one can add from the system's "navigation ball" menu and manages to display pages with little to no ghosting. Had the Note Air physical volume buttons, those could also be used for "page up/down" in EinkBro, but unfortunately it does not. Although it has an option to force pages to be in dark mode, the opposite isn't true, so with the advent of websites switching to global dark mode by default some UI elements on webpages may be invisible.</p>
<p>Because of the aggressive battery saving, it doesn't make sense to try to run Orbot in the background, so I just used <a href="https://web.archive.org/web/20220913210208/https://guardianproject.info/fdroid/">the official Tor Browser</a> instead which carries its own embedded Tor executable. It also works well, but it doesn't respect the system's "reduce animations" setting, so there is heavy ghosting from the initial "connect to Tor" screen and in the user interface.</p>
</div>
<hr>
<div class="box">
<h2>Conclusion</h2>
<p>I think it is funny that, throughout this week of setting the device up, there have been so many angel numbers in the version numbers of the software I've used:</p>
<ul>
<li>F-Droid: 1.14</li>
<li>NoRoot Firewall: 4.0.2</li>
<li>Aurora Store: 4.1.1</li>
<li>Buran: 1.11</li>
<li>dave: 0.4.0</li>
<li>Lemuroid: 1.14.1</li>
</ul>
<p>...and probably more (because I didn't keep very good documentation while I was writing this post). You <em>cannot</em> convince me this is a coincidence.</p>
<p>With the exception of not detecting game controllers, which I'm still Big Mad about because of the sheer absurdity of trying to play games on a device meant for reading, the Onyx Boox Note Air is a very capable device for anyone who doesn't have their head buried in YouTube or TikTok all day. There is Internet access and the ability to run (almost) all of the apps one is accustomed to, but the experience is <em>just</em> shitty enough to stave off many of the addiction-forming behaviors of Big Tech. Plus, with Android 10, said apps will support the device for many years. I hope to get more used to writing on it in the years to come. Assuming I live that long, of course.</p>
</div>
<hr>
<div class="box">
<p align=right>CC BY-NC-SA 4.0 &copy; Vane Vander</p>
</div>
</article>
</body>
</html>