The new release is here! Nemo is now running on CutiePi tablet. It is a device based on the Raspberry Pi Compute Module. There have been a lot of changes in the backend, including ofono, glacier-home, and even the keyboard plugin. End user applications are also constantly improving. The dialer has a new design. The music app has a lot of bug fixes and was partially rewritten. The gallery app shows again pictures and has new video controls. We have updated some screenshots on our website. There are some known bugs waiting for your fixes.

New Device: CutiePi

CutiePi is a new device to play with. Bringing support for a new device is always a challenge. The designers of the CutiePi were trying to reuse working peripherals. There is already an arm-profile for rpi4 in Manjaro which was almost ready for CutiePi. It ships Raspberry Pi 4 kernel.

Required changes include boot parameters in /boot/cmdline.txt and replacement of /boot/config.txt. The device configuration required for booting into lipstick UI was already in cutiepi-shell. The nemo-device-cutiepi repo was created to store those device specific configuration files. It was forked from the PinePhone device, hence it still contains many leftovers not related to CutiePi.

After some discussion the related patches manjaro-arm-tools and arm-profiles were merged, so the image with phosh or plasma mobile could be built. However, it still needs some manual changes. The new device configuration is named rpi4-cutiepi.

CutiePi contains mpu6050 accelerometer and gyroscope. The driver is already in the kernel. It is necessary to add device tree overlay which describes that mpu6050 is connected via i2c bus. Its compiled binary was added together with config.txt. The overlay contains mount matrix to define its physical orientation. This configuration still needs to be configured for sensorfw.

CutiePi is using standard OV5647 camera. Libcamera should work with that. Hopefully it will.

The biggest issue is with MCU module. The module is connected via ttyS0. It provides information about the battery and the power button. The cutie-pi shell is using its own daemon to communicate with MCU and to provide a DBus interface with the rest of the operating system. The /sys/class/power_supply/ interface should be used instead. Adjusting system daemons to work with those special daemons leads to extra downstream patches we don’t want to maintain. Luckily CutiePi developers plans to create necessary drivers. The related cutoff application was already packaged, but it seems that the latest mcu firmware needs to be flashed first.

Due to the missing integration of the power button, the waking up from sleep mode may require hitting the ESC key on the keyboard attached via USB.

Backend

We are moving forward in upstreaming our changes into Manjaro. We are not using our specific arm-profiles anymore, so the repository was deleted to avoid confusion.

The qtquickcontrols-nemo was migrated to cmake which can add flexibility and it is a small step forward in the direction of Qt 6.

Ofono was upgraded to 1.34 with SailfishOS plugins. However, it is hard to evaluate if everything works properly. Please report how it works on your phone with your provider. Sergey is using stock modem firmware, Jozef is using Biktorgj‘s 0.6.2.

The home screen search feature wasn’t showing an application icons. There is still an issue with the ListView component size and the running of items.

Glacier-home now renders reboot and poweroff on top. Other applications shouldn’t overlap with it anymore.

The Nemo keyboard plugin is now showing currently selected layout. Unfortunately, the inspection of the code shows that use of the accent characters is not implemented at all. It would also be interesting to add the accent modifiers keys which adds ˇ and/or ´ to regular letters.

The glacier-settings-accounts was added to regular builds and extended with gmail accounts. This settings plugin allows us to work with signond to manage email accounts and social networks in a single place. It will appear in settings app once is installed. It will be included in the default application set once it is ready to use.

The glacier-settings interface for time configuration wasn’t connected to qml-plugin-system-settings (date settings was). This is now fixed, but it turned out that timed daemon cannot pass the settings to connman:

timed-qt5[21598]: WARNING: Failed to call net.connman.Clock.SetProperty: The name net.connman was not provided by any .service files

Applications

The translations are maintained using *.ts files and transifex. The lupdate based export doesn’t cover translations of application titles in *.desktop files. We are cheating a little. The Name field is extracted from the *.ts file using xmllit. We are using the application title for that. This approach was unified across glacier apps. The string can be usually found in main.cpp and it looks like this:
app->setTitle(tr("Dialer"));

We are using the QtQuick Compiler for most applications now. It brings some speed. On the other hand almost all URLs needed to be changed. It depends if the URL was absolute or relative previously and if the image was moved into resource as well. The QtCreator can nicely recognize the qrc as part of the project. However, some qml files (usually api) are not included in qrc. This may lead to confusion because some files are not visible. See screenshot. Additionally, it is necessary to recompile application to change single qml file, hence debugging on the device needs a little more work than before.

Dialer application was reworked and has a fresh look and feel. It seems there is some bug in nemo-qml-contacts-plugin. The contact name and avatar is not loaded and does not show on the Incoming/Outgoing call page.

There were a number of bugs in Music application. There was an issue with unwanted removing of ID3 tags from file meta data. Starting replay of the song through the playlist started a different song. It looks the same on first impression, but about half of it was rewritten.

Gallery wasn’t working due to changes in the SPARQL queries in qtdocgallery. It is likely that those changes will be available in the new tracker. We have reverted it to the previous commit until the tracker package is updated. The video player part acquired the video seek feature. The Big Buck Bunny is quite standard file for video playback demonstration and/or benchmarking. Unfortunately, even the 480p version is not playing fluently.

Sizing of Calendar and Alarm clock elements was adjusted a little bit to improve its usability on PinePhone screen.

Housekeeping

We have updated screenshots on our website to give you a better idea of what nemo looks like. Tags in blog posts could be used for search.

Known issues

Some packages have missing dependencies, so non-graphical feedback daemon (ngfd) and transitively glacier-dialer don’t work on the PinePhone. It is not clear if it should a be dependency of ngfd or per-device dependency. The workaround is to install the package manually:

pacman -S gst-plugins-good

There is some issue with glacier-devicelock. It seems the application creates /home/manjaro/.config/glacier-devicelock/ directory with root as its owner. It includes directory .config which effectively prevents storage of configuration on other applications (including glacier-settings). The workaround is to fix file ownership:

chown manjaro.users -R /home/manjaro/.config

Release

The images for version 0.9 are available at img.nemomobile.net. See installation section for more details.

By Jozef Mlích

Software Developer at GreyCortex, NemoMobile contributor, Micro light aircraft pilot, OpenAlt Conference organizer