2024-08-06 Pocket Reform

I got my MNT Pocket Reform miniature laptop! I'm hoping that this will be my new travel laptop as the Purism laptop I got back in 2017 has a broken hinge. The two halves of the Purism laptop are attached to each other using two super strong hinges. The hinges are so strong, in fact, that one of them ripped its screws out of the plastic. So now the screen is held up by just one super strong hinge and I don't really want to open or close it all that often for fear of breaking it.

MNT Pocket Reform

back in 2017

broken hinge

Here are my initial impressions of the new MNT Pocket Reform.

It is small, but chunky. It's definitely not flat. It also isn't heavy, so I'm happy. The small keyboard and the small trackball work.

I was unable to power it on for the longest time. I had two problems.

First, there's a small standby power switch on the left hand side that you need to turn on. The manual suggests "using a pointed object such as a SIM card ejector." Which I managed to find. And then what do you do? You use the SIM card ejector like you always do: stab it into the small hole. So I did that for a bit, wondering at the empty spaces I was a able to reach. What was I supposed to press? It was only when I started to really look into the small hole that I realized: there was actually something to be moved left and right within it!

Second, the manual says that to turn it on, "hold *Hyper* + *Enter* for more than 2 seconds." I pressed those two keys and the OLED display lit up. There was the menu! There it said "Power On". I picked it. Nothing happened. Then the OLED display showed a tiny "T" in the upper left corner. I did this again and again, exploring the small menu. The laptop wouldn't power on no matter how often I selected the menu. That's because I didn't press *Hyper* + *Enter* for more than 2 seconds! Press those keys until the keyboard lights up with the pink backlights.

I setup my root passwords, created my user account, ran `sudo apt update` and `sudo apt upgrade` and looked around at things. After a few minutes I noticed that there is no indication of the batteries charging. That made me nervous for a while as I kept seeing that "1%" charge in the top right corner. It's probably charging, I thought. Then the laptop turned off. Oh! I guess it wasn't charging after all. What did I miss? Now that it is powered off, I see that the load percentage starts climbing again.

This is what it says right now:

πŸ”‹ 3.6                8%
πŸ”‹ 3.7               Off
                  -1.07A
                  7.57V

Why is the second battery off? The manual doesn't explain what On/Off on the second line means. It's an indication of whether the computer is on or off! For the longest time I thought that the first battery had some charge and the second battery was "off". Once I rebooted, it changed to "On".

In any case, it seems that my problem is that when the laptop powers on without being connected to a charger, it won't charge if you do connect it. Perhaps a new system image would fix it? I'm not sure. I downloaded an image, unzipped it, wrote it to a microSD card, and maybe booted from it, but nothing seemed to have changed. I had to provide a root password and a first username and another password… and that's it. Was I supposed to run a command? I don't know. Did the `apt update && apt upgrade` fix the problem? I don't know.

Anyway, when the laptop suddenly lost power (see above) I waited for it to recharge for a bit and rebooted. It looked like this had corrupted the disk, somehow. There are plenty of recovery messages and percentages ending with an error because something cannot be written to the read-only file system.

The output ends with the following, in an extremely tiny font:

...
mount: mounting /dev/mmcblk2p2 on /root failed: Structure needs cleaning
Failed to mount /dev/mmcblk2p2 as root file system

And now I am dropped in the `initramfs`. I try figure what I'm supposed to do. I search for some keywords online but don't understand what I'm seeing. Finally, I try to leave with `exit`, Ctrl+D and whatever else I can think off. I reboot. This time there are fewer messages about the filesystem and then I'm back at the login prompt. It fixed itself.

Phew!

I'm back.

My take-away is this: usability and user interface issues both large and small remain a challenge in computers.

​#Gadgets ​#Laptop ​#Reform

Specifically, I learned about all the commands starting with `reform-`. Nice! In the manual these tools are mentioned on page 50.

When I run `sudo reform-check`, it tells me that "eMMC does not contain the latest uboot" and that I can run `reform-flash-uboot emmc` to fix it. Do I dare? The following two messages are shown and they are not identical. That's a bit strange.

W: /boot/flash.bin is not the latest uboot
W: You can update it to the latest version by running as root:
reform-flash-uboot
W: eMMC does not contain latest uboot
W: You can update it to the latest version by running as root:
reform-flash-uboot emmc

I guess I'll run the first command and then `reform-check` again.

In the meantime I saw that I don't have the `pocket-reform-handbook` installed but that I do have the `reform-handbook`. Heh. (The MNT Reform is the bigger laptop.)

Anyway, when I run `reform-flash-uboot` without arguments, I get an error.

/usr/sbin/reform-flash-uboot: 59: MMC_BOOT: parameter not set

I cannot decide whether this is a typo or not. It looks like one?

alex@subterraneobombus ~> sudo nl /usr/sbin/reform-flash-uboot|grep MMC_BOOT
    27	if [ "$EMMC_BOOT" = false ]; then
    49		if [ "$EMMC_BOOT" = true ] && [ "$SD_BOOT" = true ]; then
    53		elif [ "$MMC_BOOT" = true ]; then
    60		if [ "$EMMC_BOOT" = true ] && [ "$SD_BOOT" = true ]; then
    71		elif [ "$MMC_BOOT" = true ]; then
alex@subterraneobombus ~> grep MMC_BOOT "/usr/share/reform-tools/machines/MNT Pocket Reform with
 i.MX8MP Module.conf"
EMMC_BOOT=true

Do I really want to do this? Luckily, I mentioned this issue on IRC, and @josch@floss.social pointed me to this post by @andypiper@macaw.social: Updating uboot?. This is the important bit:

Updating uboot?

Do *not* flash u-boot to emmc on the pocket reform.
There is a bug in the u-boot offset which will make your pocket unbootable if you fix the other bug in reform-flash-uboot. – josch on IRC

Oof! Disaster narrowly avoided. And now I understand what Andy Piper means when he writes:

I also managed to temporarily brick the machine by corrupting the uboot in flash, and needed to rig it up with Dupont wires on headers and access the machine from another via USB to get back to where I wanted to be. – MNT Pocket Reform: first impressions

MNT Pocket Reform: first impressions

Andy's post had a screenshot showing the fediverse client Tuba which is available on Debian testing. Nice! I'll give it a try.

Tuba

Tuba requires a "login" keyring so I had to install `seahorse` also known as "Passwords and Keys". See keyring issues for more.

keyring issues

Back to small things to watch out for. When I run `apt update` it ends with a notice saying: "Missing Signed-By in the sources.list(5) entry for `https://mnt.re/reform-debian-repo`"

the battery indicator stopped working

You don't need to configure `waybar-upower(5)` because the defaults are good. I didn't delete the config for `waybar-battery(5)` because as far as I can tell, the idea is to go back to it.

While we're looking at the window manager, this is my new background image:

a mountain in inverse colours, so the green grass is instead magenta so it matches the MNT Pocket Reform colours

Note that when you view the image in another tab, it'll be a negative: purple grass instead of green grass. The original is what I used before coming up with the image above.

original

You know what I've been putting off? Firefox setup. 😭

Firefox setup

Of course, both of these things are not related to the MNT Pocket Reform, but the unavailability of the USB-C cable and the shortness of the RJ45 cable are a sign of … hand wave … the complexity of the globalized information technology landscape and … uh, more hand wave … logistics on a global scale … and, I dunno, something vaguely disappointing about computing in general and the times we live in. Or me growing older. I really don't know.

It feel it belongs in the general category of "usability and user interface issues both large and small remain a challenge in computers."

WiFi reception problem, probably overheating wireless chipset

I also have some long network cables with RJ45 plugs and I bought the ix Industrial Ethernet RJ45 adapter cable, so yesterday I ordered a RJ45 CAT 6A coupler and I'm hoping that will allow me to get regular ethernet networking for the Pocket Reform.

When I go back to the Crowd Supply page, it says: "USB 2.0 Cable: Type-C to Type-C (2 m / ~6.6 ft). Ships within three business days." So with these two cables I should be able to take the Pocket into the living room and have both independent power and ethernet.

In any case, after reading Desktop theme consistency I added the following to my `~/.config/sway/config`:

Desktop theme consistency

gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'

Oh, how I long for Debian stable. Hopefully one day! Until then, however:

sudo apt update && sudo apt upgrade
...
Summary:
  Upgrading: 204, Installing: 28, Removing: 0, Not Upgrading: 0
  Download size: 0 B / 427 MB
  Space needed: 48.9 MB / 107 GB available
  └─ in /boot:  182 MB / 298 MB available

Continue? [Y/n] 
Retrieving bug reports... Done
Parsing Found/Fixed information... Done
critical bugs of libkmod2 (32+20240611-1 β†’ 33+20240816-1+reform1) <Resolved in some Version>
 b1 - #1079022 - kmod: symbol lookup error: /usr/lib/dracut/dracut-install: undefined symbol: kmod_module_get_weakdeps, version LIBKMOD_5 (Fixed: kmod/32+20240611-1 kmod/33+20240816-2)
   Merged with: 1079035 1079068
serious bugs of python3-pkg-resources (70.3.0-2 β†’ 72.2.0-1) <Resolved in some Version>
 b2 - #1079175 - python3-pkg-resources: pkg_resources cannot be imported: No module named 'packaging' (Fixed: setuptools/73.0.0-1)
Summary:
 libkmod2(1 bug), python3-pkg-resources(1 bug)
Are you sure you want to install/upgrade the above packages? [Y/n/?/...] n

Error: Sub-process /usr/bin/apt-listbugs apt returned an error code (10)
Error: Failure running script /usr/bin/apt-listbugs apt

This `libkmod2` error reminds me of something I heard on the forum. Better not upgrade. The thread was ALERT! /dev/mmcblk2p2 does not exist. Dropping to a shell! and that doesn't seem related at all but somewhere in there:

ALERT! /dev/mmcblk2p2 does not exist. Dropping to a shell!

The apt-listbugs package is installed and will warn you before you upgrade your system about any release critical bugs in the package versions that you are about to install. Did you see those warnings before you upgraded?
I uploaded a fixed version of the kmod package into the mntre.com 2 repository about 12 hours ago. But if you upgraded yesterday, then indeed your system is now unbootable because an initramfs was created which is missing virtually all kernel modules.

This this the same as libkmod2? Does the warning above say that the bug in libmod2 is fixed or not? I don't understand what `<Resolved in some Version>` means. If this is a resolved ticket, then I can proceed. If this is a new ticket involving something related to `kmod`, I should not proceed.

Sometimes I wonder whether my hesitancy is age related. Or due to experience, haha. I wasted countless hours getting the Modline settings correct in order to get X11 running, on that 4MB computer I had back then. These days, I see words like "soft-brick your laptop" and think to myself: I guess I can live without an upgrade. Perhaps it'll resolve itself?

Minetest

MNT Pocket Reform: a (literal) field test

MNT Pocket Reform first impressions

There's now Wi-Fi Card + Antennas ("Improve Reception and Stability with the Wi-Fi Card + Antenna Bundle for MNT Pocket Reform") up for pre-order. It costs $50 and is expected to ship in two months. This is the kind of thing that makes me nervous, however. I don't mind a sysadmin task or two, but when I need to unscrew stuff and look at the laptop innards, that's more tinkering than I expected. I like the fact that I can upgrade my laptop, I don't like the fact that I need to upgrade my laptop. Also my idea of upgrade means "unscrew back, unplug old thing, plug new thing" and I'm afraid this antenna thing might be more involved than that.

Wi-Fi Card + Antennas

The RK3588 is β€žthe right choice if you desire the maximum in CPU and GPU performance as well as 16 or 32GB of RAM.β€œ The A311D is β€ža solid, affordable choice for your MNT Pocket Reform β€” both in terms of CPU and GPU.β€œ – MNT Pocket Reform Upgrade Bundle

MNT Pocket Reform Upgrade Bundle

If you supported our crowdfunding Crowd Supply campaign back in 2023, your MNT Pocket Reform contains the CPU module i.MX 8M Plus. At the time of the campaign, this module was a solid choice for Pocket Reform. We had the chance to obtain a processor module with 8 GB RAM, USB 3.0, PCIe, dual display, and good Linux mainline support. Shortly after the campaign, Lukas developed both the A311D (Banana Pi) and the RK3588 module for MNT Reform. We thought, if they were compatible with Pocket Reform, they would make a great addition. And they do! Since many use cases require a faster CPU and GPU, we decided to provide an upgrade option: By ordering the MNT Pocket Reform Upgrade Bundle, you can choose between the A311D and the RK3588 processor modules. This bundle also contains an optional NVMe SSD M.2 (1 TB) and an optional Wi-Fi Card plus Antennas. – MNT Pocket Reform Upgrade Bundle

MNT Pocket Reform Upgrade Bundle

on Gopher

it worked flawlessly

This seems to do the trick. Pipe the output into sh to mount them all. I added this to the init script of my shell.

lsblk --json --list --output name,label,mountpoints
  | perl -MJSON -e '
undef $/;
my $r = decode_json(<STDIN>);
for my $d (@{$r->{blockdevices}}) {
  if ($d->{label} && !grep { $_ } @{$d->{mountpoints}}) {
    print "udisksctl mount -b /dev/$d->{name} # $d->{label}\n";
  }
}'

My first login shell now greets me with: β€žMounted /dev/mmcblk0p1 at /media/alex/Card Vaulto.β€œ