RISC-V Phone

RISC-V Phone

The goal of the this project is to develop a privacy enhanced, simple and fully featured mobile phone.

Technical specs:

  • CPU: SiFive Freedom E310 (RISC-V) microcontroller
  • WiFi/BT: Espressif ESP32
  • Graphics: BT817 Display controller
  • Cellular modem: Mini PCIe module (SIMCom SIM7600X or Quectel EC-25)
  • Audio: MAX98357A Class D amplifier / ICS-43434 MEMS Microphone
  • Accelerometer: LSM9DS1 - gyro, accel, magnetometer
  • Haptic driver: DRV2605L
  • NXP i.MX 8M System-on-Module daughterboard

Description

RISC-V microcontroller controls its attached periferals: comm controller (ESP32), display controller (BT817) and display itself, touch controller (GT911), audio subsystem, camera module (ArduCAM with OV2640 image sensor) and sensors. Communication controller provides WiFi/BT connectivity, controls cellular modem and communicates to ARM SoM daughterboard. Display is attached to the main board via adapter and is shared between display controller and ARM SoM. REV1 hardware used EastRising ER-TFT043-7 display, REV2 hardware uses FocusLCDs E50RG84885LWAM520-CA and other diplays may be used via adapter.

RISC-V microcontroller firmware implements:

  • SPI driver which allows two-way communication with comm controller, talks to display controller, display and camera module
  • I2S driver which controls audio subsystem with the help of 7400-series logic
  • I2C driver which talks to touch controller, BQ25895 battery charger, image sensor, haptic driver and gyro/accel/magnetometer sensor
  • GUI library that utilizes BT81x controller
  • SD card driver with AES/Blowfish encryption
  • FAT filesystem through FatFs library
  • power management
  • ecp library that implements EllipticCP protocol. Library provides end-to-end encryption with onion routing features

Comm controller firmware implements:

  • SPI slave driver that provides communication to RISC-V microcontroller and ARM SoM
  • Cellular communication library that controls modem and provides PCM (Voice), SMS, PDP (cellular data over PPP) and USSD services
  • LwIP tun driver that provides WiFi access to ARM SoM

There is yocto project layer that implements board support package for CL-SOM-iMX8 board and SPI/TUN userspace driver that utilizes comm controller for WiFi access

For build instructions please visit build page.

Schematic:

Project status

screenshot

REV3.2 - Sep 23 2022:

  • Added PCA9536 I/O expander for audio signals (stereo/mono and speaker gain controls)
  • Added I2S interrupt trigger pin and I2S serial data input/output multiplexers

REV3.1 - Dec 23 2021:

  • Added missing pull-up/pull-dn resistors
  • Improved input power section
  • Improved audio section
  • Improved stability of add-on boards
  • UART signals are routed through audio mux instead of I2C signals
  • Adjusted FFC connector positions on display adapter for proper display fit

REV3 - Oct 1 2021:

  • Touch controller is routed to FE310 instead of BT817
  • Added sound multiplexer between amplifier and phone jack/speakers
  • Added BT817 sound connector
  • Changed amplifier volage to 5.0V from BQ25895 boost converter
  • Added console connector and power/reset/alt boot switches for i.MX8
  • Added schottky barrier rectifier for BQ25895

REV2 - Mar 29 2021:

  • Replaced FT813 with BT817 display/touch controller BT817 24bit parallel output is serialized using DS90C185 i.MX8M LVDS output and BT817 output are multiplexed using TS3DV520E
  • Added 2nd MAX98357A amplifier for stereo sound
  • Added FT230X USB to UART interface. Allows programming both fe310 and esp32 without JTAG programmer
  • Added LSM9DS1 accelerometer/gyroscope/magnetometer sensor

License

Hardware licensed under the CERN OHL v1.2

Software licensed under the GPLv2

Acknowledgments

This project is supported by the NGI Zero PET project, a fund established by NLnet foundation with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology. NGI Zero PET project has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreement No 825310.