Rust auf dem Picoboy und dem Picoboy Color

In den letzten Tagen erreichte mich der Picoboy Color, nachdem ich schon einige Zeit im Besitz eines Picoboy war. Neben den üblichen Spielereien war ich daran interessiert die beiden Geräte mittels Rust zum Laufen zu bekommen. Also warf ich einen Blick auf das vorhandene Tooling und am Ende entstanden zwei Crates, zur Anbindung der Picoboys an Rust.

Die entstandenen Crates

Auf Basis der rp-rs-Projekte entstanden, neben den Board Support Packages auch neue Templates zum Start neuer Projekte. Die einzelnen Repositorys sind hierbei picoboy-hal-boards, picoboy-project-template und picoboy-color-project-template. Sie sind jeweils under der Apache- und der MIT-Lizenz lizenziert.

Der Picoboy und der Picoboy Color, mittels Rust programmiert

Über das Rust-Werkzeug cargo-generate, welches mittels:

cargo install cargo-generate

installiert werden kann, können neue Projekte über die bereitgestellten Templates angelegt werden. Für den Picoboy wäre dies:

cargo generate --git https://github.com/seeseekey/picoboy-project-template.git

Analog dazu für den Picoboy Color:

cargo generate --git https://github.com/seeseekey/picoboy-color-project-template.git

Die Beispiele zeigen die Nutzung der Steuerung, das Zeichnen auf dem Display und einige weitere Kleinigkeiten. Hier ist an einigen Stellen durchaus noch Verbesserungsbedarf gegeben, so können z. B. die Abhängigkeiten angepasst werden, sobald die Basisbibliotheken von rp-rs auf die aktuellen Versionen aktualisiert wurden. Auch ein Upgrade der st7789-Bibliothek auf den Nachfolger mipidsi wäre dann denkbar.

Das Zeichnen auf dem Display erfolgt im Moment noch direkt, hier ließe sich die Performance durch die Nutzung von embedded-graphics-framebuf verbessern. Ebenfalls denkbar wäre eine weitere Modularisierung, so könnte z. B. die Controller- und Display-Initialisation in separate Rust-Module ausgelagert werden.

Gitea-Fork Forgejo

Wer Git-Repositorys nutzt und hierfür eine zentrale Anlaufstelle nutzt, kann Systeme wie GitHub nutzen. Daneben existieren auch Alternativen für die Nutzung im selbst gehosteten Umfeld, wie Gogs, aus welchem später Gitea hervorging.

Forgejo in der Nutzung.

Aufgrund der Gründung der Gitea Limited, welche kommerzielle Dienste rund um Gitea anbot, entwickelte sich der Fork Forgejo, welcher mittlerweile beim Non-Profit-Hoster Codeberg genutzt wird.

Nach einem anfänglichen Soft-Fork, handelt es sich mittlerweile um einen Hard-Fork, sodass eine Kompatibilität zu Gitea nicht mehr gegeben sein muss. Aktuell können Migrationen von Gitea zu Forgejo noch problemlos vorgenommen werden, sodass sich ein prüfender Blick auf Forgejo lohnt.

Probleme mit dem Rust-Linker unter Windows

Die Installation der Programmiersprache Rust ist in vielen Fällen ziemlich unkompliziert. Trotzdem trat nach einer Installation unter Windows folgender Fehler auf:

error: linker `link.exe` not found
note: The system cannot find the file specified. (os error 2)
note: the msvc targets depend on the msvc linker but `link.exe` was not found
note: please ensure that VS 2013, VS 2015 or VS 2017 was installed with the Visual C++ option
error: aborting due to previous error
error: Could not compile `console`.

Gesucht wird hier nach einem Linker aus einem Visual Studio-Paket. Wer dieses nicht nutzen möchte, kann stattdessen die Toolchain umkonfigurieren:

rustup toolchain install stable-x86_64-pc-windows-gnu
rustup default stable-x86_64-pc-windows-gnu

Damit wird nun eine freie Variante eines Linkers aus dem GNU-Projekt genutzt und die Rust-Applikation sollte kompilieren und erfolgreich gelinkt werden können.

Doppelte Controller unter ChimeraOS

Unter ChimeraOS kann der Xbox Series X-Controller genutzt werden. Allerdings kann unter Umständen ein seltsames Verhalten beobachtet werden. Solange ein Controller per Bluetooth verbunden ist, ist alles in Ordnung.

ChimeraOS kann mit einem Xbox-Controller genutzt werden

Sobald jedoch ein zweiter Controller verbunden wird, taucht dieser dupliziert in den Steam-Controller-Einstellungen auf. Auch in Spielen wie Castle Crashers ist dies der Fall. Das führt dazu das der zweite physische Controller bei jeder Benutzung, jeweils Events für den virtuellen zweiten und dritten Controller abfeuert.

Beheben lässt sich das Problem, indem sich auf dem Terminal von ChimeraOS eingeloggt wird und der Input Plumber-Service deaktiviert wird:

sudo systemctl disable inputplumber

Nach einem Neustart werden die physikalischen Controller dann nur noch jeweils einmal erkannt.

Zugriff auf den iCloud-Schlüsselbund im Firefox

Im Safari und unter macOS kann der iCloud-Schlüsselbund genutzt werden, um damit Passwörter aus diesem zu nutzen. Mittlerweile stellt Apple für den Chrome-Browser eine offizielle Erweiterung zur Verfügung.

Für den Firefox gab es lange Zeit keine Unterstützung. Mit dem Add-on iCloud Passwords von Aurélien ändert sich dies.

iCloud Passwords
Preis: Kostenlos

Nach der Installation wird der Passwort-Manager mit der Hilfsapplikation, die Apple für diesen bereitstellt, verbunden. Anschließend können dann die Passwörter aus dem Passwort-Speicher auch im Firefox genutzt werden.

Der Code zur Verknüpfung

Die Verknüpfung muss bei jedem Neustart des Firefox neu bestätigt werden. Der Quelltext der Erweiterung ist auf GitHub zu finden. Lizenziert ist die Erweiterung unter der Apache License in Version 2 und damit freie Software.