This page lists all software used on a ZeroPhone, both specifically developed for it and already existing.
|Packaging||None yet; TODO|
ZPUI is the official ZeroPhone UI, tailored for the 128x64 display and buttons. It has an assortment of Python apps for controlling a ZeroPhone, and it's going to evenutally be the base for a fully capable mobile phone UI, allowing to do everything that dumbphone UIs allow - and more.
ZeroPhone Python API
A Python wrapper around ZeroPhone hardware control functions. Currently, allows ZPUI apps and other software to control the 5V DC-DC and RGB LED, as well as see if the ZeroPhone is charging.
A small script that runs on ZeroPhone boot and enables the ZPUI software power switch (flashing the RGB LED green in the process).
A driver allowing us to use ESP-12 WiFi modules as WiFi cards.
This is a firmware for the ATMega328P on the ZeroPhone front board. Currently, it reads the ZeroPhone keypad and sends the keycodes over I2C; in the future, vibromotor/keypad backlight control and ADC/PWM support will be added.
ESP8089 driver firmware
This is the firmware blob used by the esp8089 driver to make a ESP-12 module work as a WiFi card over SDIO (included in the esp8089 driver sources and, subsequently, the esp8089-dkms package). It's loaded by the driver into the ESP-12 module over SDIO, when the driver is loaded.
SIM800 modem firmware
This is a closed-source firmware that's loaded into the modem at the factory, and is responsible for most of the modem's operation. Various firmware images are avaiable on the Internet, along with Windows-specific update tools and instructions. There does not seem to be a tool to update the modem firmware under Linux, but it should be doable, given that the specifications are available (GitHub issue)
Raspberry Pi boot ROM
This is a ROM that controls the earliest stage of the Raspberry Pi boot process. It's hard-coded in during the chip manufacturing, so it's impossible to upgrade it. It contains the code that launches the code from the SD card if one is present, as well as puts the Pi in the load-code-over-USB mode ("BCM2708 Boot") when the SD card is not found; this applies to all the Pi's, including Zero and Zero W that we use. In BCM2837 CPUs (Pi 3 and Pi 3B+), this ROM is also responsible for USB/LAN boot. This ROM does not seem to warrant a discussion, since it's a mask ROM that can't be updated and the associated security/privacy concerns are therefore low.
Raspberry Pi bootloader
This is a binary blob that is launched from the SD card by the boot ROM from the FAT32 ("boot") partition on the SD card; its filename is bootcode.bin. It's supplied in its binary form through the Raspbian-supplied .deb packages. It initializes a significant part of the hardware (GPU, RAM, UART and the CPU itself), loads information from config.txt and cmdline.txt files, then loads the Linux kernel from the same partition and launches it with parameters taken from the cmdline.txt file (and some additional ones).
- add an "Operating system" section, describing Raspbian and other alternatives as they appear?
- add significant third-party ZPUI dependencies (i.e. luma.oled)?