OS for a dumbphone
Find a file
2023-10-07 13:33:14 +02:00
src wip 2023-10-07 13:33:14 +02:00
.gitignore Initial commit 2023-08-20 11:33:45 +02:00
Cargo.lock wip 2023-10-07 13:33:14 +02:00
Cargo.toml wip 2023-10-07 13:33:14 +02:00
LICENSE Initial commit 2023-08-20 11:33:45 +02:00
README.md wip 2023-10-07 13:33:14 +02:00
rustfmt.toml State transitions, key labels 2023-09-17 00:15:48 +02:00

Rustphone

(temporary name) (early development)

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

Goals

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

# Choose one line depending on your distro
sudo pacman -S arm-none-eabi-gcc
sudo apt install gcc-arm-none-eabi

# Install Rust target
rustup target add thumbv6m-none-eabi

Run simulator

cargo run --features simulator

Build

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

Pins

  • 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.

components

crates

Apps

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

Keypad

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