This update is the fourteenth in a series of regular updates on the state of the project.
Only changes that have been accepted and merged in Mobile NixOS are chronicled here. There’s always more work currently in-progress.
During the month 18 pull requests were merged.
Buckle-up, this month there’s a lot to say.
Go go all USB gadget modes
A couple changes this month are related to USB gadget mode. This is the name of the feature allowing a device (your cellphone) to be used as a USB device on your computer.
Target disk mode
This is not a fresh feature, the implementation pull request was opened in March 2020.
Once a device is booted with this example system, the device’s internal storage is made available over USB, as if it was a USB mass storage device.
The feature is limited to select devices, as it can be easily misused. The
asus-dumo devices are configured for this feature.
It is limited as the block device to export has to be configured on a
per-device basis. A further reason is the following:
Target disk mode should not be used to export the full drive of Android-based devices as it becomes trivial to brick a device. Some of their partitions should not be touched.
This is because for most Android-based devices, part of their basic firmware needed for booting is found on the main block device. Erasing or modifying the wrong partition would be like erasing the BIOS from your computer.
Broader ADB support
Time was taken to understand why ADB didn’t work on newer Android-based devices. It was initially suspected that the ADB daemon was incompatible with GadgetFS and FunctionFS.
It was much more trivial. The FunctionFS feature of the kernel needed the daemon to be started at a specific moment during the configuration, rather than at any time after.
With the fixes in #290 any device with GadgetFS can use ADB.
This means inspecting newer Android-based devices is easier, as it will most likely work if the device boots with a vendor kernel.
Using ADB is not limited to Android-based devices. The
asus-dumo device is
confirmed to be able to also use ADB. It is now the recommended basic method
for getting a shell into a Mobile NixOS device, as it is easier to use than
A few updates were bundled together in #285. A few improvements to the early boot toolkit.
Our toolkit used for user interfaces during early boot can now use DRM for rendering, in addition to fbdev.
The old framebuffer support is still present. In fact, compiling with DRM support implicitly also builds with fbdev support, as it will fall back to fbdev if DRM cannot be used. This allows one unique build to be used across devices with and without DRM support.
Adding support for DRM gives us an additional method of rendering. Some vendor
kernels have broken fbdev implementations, like the SDM845 found in the
razer-cheryl2 phone. With this change, early boot can be used on this device.
DRM is also the "future" of rendering on Linux. Well, it is the present of rendering on Linux. This is why it is now the preferred method to render the interface, when possible.
The evdev-based input driver has been replaced with a libinput driver. Libinput is the current recommended method for handling input with Linux. Evdev being one of the primitive constructs it uses.
Compared to the previous evdev driver used, there should be no differences with basic behaviour. Mainly, this was a clean-up, allowing us to remove some hacks that were used to identify device types with evdev. Libinput intrinsically knows more about the device than evdev did.
Wi-Fi support for qcacld-2.0 devices
The requirements for devices with
qcacld-2.0 Wi-Fi hardware have been
Support has been added in the following pull requests for the following devices:
The following device also uses
qcacld-2.0 Wi-Fi. Support has not been added
Initial support for Samsung Galaxy A5 (2017)
Support for the Samsung Galaxy A5 (2017) has been added.
It is the first Exynos device in Mobile NixOS, with an Exynos 7880. The device is otherwise unremarkable, it turns out that Mobile NixOS mostly just worked with Samsung’s initial boot flow. It required some minor adjustments, which are likely to help with their other phones and tablets.
Pinephone U-Boot update
January saw the release of U-Boot 2021.01. Mobile NixOS was already one version late, as 2020.10 was never packaged.
As with the previous update, upstream U-Boot is used, preferring to import well-identified patches for the remaining features desired.
This change should change nothing for many users. Users with a 3GB variant of the Pinephone will be relieved to know that they can now boot Mobile NixOS without additional work.