OS for a dumbphone
Go to file
Pascal Engélibert a4884bd189 State transitions, key labels 2023-09-17 00:15:48 +02:00
src State transitions, key labels 2023-09-17 00:15:48 +02:00
.gitignore Initial commit 2023-08-20 11:33:45 +02:00
Cargo.lock Ctx, SD 2023-09-11 22:22:20 +02:00
Cargo.toml Ctx, SD 2023-09-11 22:22:20 +02:00
LICENSE Initial commit 2023-08-20 11:33:45 +02:00
README.md State transitions, key labels 2023-09-17 00:15:48 +02:00
rustfmt.toml State transitions, key labels 2023-09-17 00:15:48 +02:00



(temporary name) (early development)

OS for a dumbphone based on Maduino Zero 4G LTE board.


GSM will be shutting down in France in a few years so if you have an old cellphone and don't want to buy a fancy, spying, expensive smartphone, making your own 4G cellphone is an interesting option.

  • Low cost
  • Privacy
  • Long battery life (this one will be complicated)
    • Low-consumption components
    • Use less CPU cycles
    • Update display less often
    • Use less wireless RX/TX
  • Usable for basic things (call, messages, agenda, contacts, notepad)
  • Customizable (smartphones don't do exactly what I want)
  • (long term) Mesh networking and other cool stuff

Install tools

sudo pacman -S arm-none-eabi-gcc
rustup target add thumbv6m-none-eabi

Run simulator

cargo run --features simulator


cargo build --release --target thumbv6m-none-eabi


  • D2
  • D3
  • D4
  • D5 (internally assigned): modem power
  • D6 (internally assigned): modem reset
  • D7 (internally assigned): flightmode
  • D8
  • D9
  • D10
  • D11
  • D12
  • D13
  • A0
  • A1 (internally assigned): vbat
  • A2 (internally assigned): vsys
  • A3
  • A4
  • A5
  • SDA: I2C
  • SCL: I2C

Used pins:

  • display SPI: 3 pins
  • keypad: 6 pins (74HC565+75HC165), maybe 5 if the same clock is used
  • display LED: 1 pin
  • torch LED: 1 pin
  • ESP UART: 2 pins (I2C still possible if not enough pins)

Note: at most 5 outputs of the 74HC565 may be used as GPO.




  • Calculator
  • Config
  • Contacts
  • Journal
  • Play audio
  • Send call
  • Send message
  • Show bitmap


Optimized to reduce the number of consecutive presses on the same key in French.

For example, the letters m, o, n are on the same key MNO6 but they frequently appear consecutively in French, so you have to wait between each letter. Having them on three different keys solves this problem.

ncb1	upz2	tdk3
eow4	lqh5	age6
sfx7	rmj8	ivy9