Difference between revisions of "Software"

From ZeroPhone
Jump to: navigation, search
(Started the "third-party firmware" section)
(Raspberry Pi bootloader)
Line 144: Line 144:
 
|}
 
|}
  
This is a binary blob that is launched from the SD card by the boot ROM.  
+
This is a binary blob that is launched from the SD card by the boot ROM. '''bootcode.bin'''
  
 
==Meta TODO==
 
==Meta TODO==
 
* add an "Operating system" section, describing Raspbian?
 
* add an "Operating system" section, describing Raspbian?

Revision as of 21:17, 29 April 2018

This page lists all software used on a ZeroPhone, both specifically developed for it and already existing.

Software

ZPUI

License Apache 2.0
Language Python
Sources https://github.com/ZeroPhone/ZPUI
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

License GPLv3
Language Python
Sources https://github.com/ZeroPhone/ZeroPhone-API-Python
Packaging zerophone_hw on PyPi

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.

BootSetupScript

License GPLv3
Language Bash
Sources https://github.com/ZeroPhone/zerophone-power-management
Packaging zerophone_power_management in ZeroPhone Raspbian repository

A small script that runs on ZeroPhone boot and enables the ZPUI software power switch (flashing the RGB LED green in the process).

ESP8089 driver

License GPLv2
Language C
Sources https://github.com/ZeroPhone/esp8089
Upstream sources https://github.com/al177/esp8089
Packaging esp8089-dkms in ZeroPhone Raspbian repository

A driver allowing us to use ESP-12 WiFi modules as WiFi cards.

Firmware

Keypad firmware

License GPLv3
Language C
Sources https://github.com/ZeroPhone/ZeroPhone-Keypad-FW
Packaging None yet

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 baclkight control and ADC/PWM support will be added.

ESP8089 driver firmware

License Not available (proprietary?)
Language C
Sources Not available (binary blob)
Upstream sources https://github.com/al177/esp8089
Packaging esp8089-dkms in ZeroPhone Raspbian repository

This is the firmware used by the esp8089 driver to make a ESP-12 module work as a WiFi card over SDIO. Unfortunately, it seems that sources for it are not available; only a binary blob is included in the esp8089 driver sources.

Third-party firmware

SIM800 modem firmware

License Unknown
Language Unknown
Sources Not available
Updateable Yes

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. Windows-specific firmware update instructions are available here: through UART or USB; through USB, there's also an appnote describing the update process. 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.

Raspberry Pi boot ROM

License Unknown
Language Unknown
Sources Not available
Updateable No

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.

Raspberry Pi bootloader

License Unknown
Language Unknown
Sources Not available
Updateable Yes

This is a binary blob that is launched from the SD card by the boot ROM. bootcode.bin

Meta TODO

  • add an "Operating system" section, describing Raspbian?