The Redphone project is an open source mobile phone

Similar projects worth following
I want to create a pocket device what help me to be a hacker =))

Based on Cortex-M4 MCU (no MMU).
Have two 32Mbytes SDRAM onboard for MCU and FPGA.
Support multiboot: linux and freertos based firmwares.
Detachable battery, SIM and SD-card.

Planned Features
* Full open source of booltloader (baremetal C) and main fimware on github (planing GPL)
* No using SPL or HAL
* Custom graphic layer library (C++)
* Custom application runnging from SD card (ELF format), and maybe community and apps store in future
* Executing lastest linux kernel & FB support
* 3D model of pocket case (solid)
* Support of Z80, ESE, NES, GMA and RISC-V core on FPGA
* Make calls, use GPRS and WIFI for TCP & UDP connections
* Connection custom peripherials to FPGA by using of USB type-c connector
and all of this in one pocket device =)

User interface example (linux simulation, original resolution of LCD):

I am planing to use 2 hardware buttons on the left side (volume ctrl) and 1 button on the right side (power).
The front lcd will be controlled by capasitive multi touch

General device structure

HW platform based

  • Cortex M4 STM32F429NI
  • FPGA EP4CE22U14I7N
  • 800x480 LCD on RM68120 controller
  • Capasitive LG P715 touch screen
  • Memory (two SDRAM MT48LC16M16A2B4, MicroSD)
  • Audio system based on (WM8903, MP34DT01 dmic, headphone, ring, minijack)
  • Wi-Fi on ESP8266
  • GSM & Bluetooth in SIM800H, nanosim (galaxy s8 sim-sd slot)
  • Sensors (MPU9250, APDS-9960, BME280)
  • GPS MC-1010-G
  • OV5647 camera (Raspberry Pi compatible) & led
  • Power domain (galaxy s4 battery, TPS65217)
  • USB type-C for custom connections
  • Vibration & camera flashlight

Adobe Portable Document Format - 1.99 MB - 08/04/2019 at 19:15


Adobe Portable Document Format - 1.23 MB - 08/04/2019 at 19:15



LCD controller datasheet

Adobe Portable Document Format - 9.74 MB - 07/16/2019 at 16:50


  • Device case & new battery

    Vasilii Chumakov10/21/2019 at 10:34 0 comments

    I decided to use a new battery in the project: C11P1325 (Asus Zenfone 6) with 3300mAh!

    Some time ago my friend from Moscow started design of device case.

    Some prerenders of assembled PCB model:

  • Success linux start

    Vasilii Chumakov08/06/2019 at 23:11 1 comment

    Tonight I've done the linux loader util.

    Step by step guide:

    1. build kernel

    use default config for stm32:

    make ARCH=arm CROSS_COMPILE=arm-none-eabi- stm32_defconfig 


    make ARCH=arm CROSS_COMPILE=arm-none-eabi- menuconfig 


    make -j ARCH=arm CROSS_COMPILE=arm-none-eabi- 

    preparing & compile correct DT

    2. coping xipImage & *.dtb on SD card

    3. run load command

    Next step - build latest busybox and make rootfs.

  • FPGA works well

    Vasilii Chumakov08/02/2019 at 15:42 0 comments

    Last night I've done NAND ctrl util.

    In Quartus 18.0 i generated empty project with simple top level:

    After synthesis I made an RPD file (raw data program)

    (btw, u can do that using console as well)

    ${Q} -d EPCS16 -c ${IN}.sof ${OUT}.pof
    ${Q} -d EPCS16 -s EP4CE22 -c ${OUT}.pof -c ${OUT}.rpd 

    ...and flashed it into the boot NAND.

    But after the synthesis and NAND flashing nothing happened... I saw only a square wave on the nSTATUS pin. Altera in manuals mention that FPGA can restart configuration sequence if an error occurs.
    I checked all the connection, pcb and schematics and after that decided to recover an original EPCS16 on my W25Q64 SPI NAND flash.

    After programming the situation repeated.
    Then I connected USB-blaster and wrote firmware in boot NAND from Quartus.

    And FPGA booting went fine (test signal was ok and nCONFIG_DONE was pulled up)! I'm reading NAND and... all the bytes turn out to be mirrored! FAIL)

    I added byte mirroring in the code and now everithing works well

    And by the end, console screenshot:
    Now i want to fix colors of LCD and start the implementation of the booting linux!

  • LCD trobles

    Vasilii Chumakov07/15/2019 at 20:16 1 comment

    I promised, but I write late. Sorry guys.

    Project log:

    3. dynamic memory allocator in SDRAM (for heap) - done

    4. supporting FAT32 - done

    5.1. fs utils: cat - done

    And... Try to work with LTDC, but need to read the documentation before PCB tracing))

    RM68120 works with 4 modes:

    • 8 bit DBI (parallel 80 bus IF for pixel data and conf), CS/WR/RD/CD
    • 16 bit DBI
    • 24 bit DBI
    • 24 bit DPI (RGB IF for pixel data and SPI for conf) PCLK/HSYNC/VSYNC/DE (can be configured in 16/18 color mode with gaps in connection on color bus: Page 72)

    Mode configurating by h/w jumers IM0/IM1.

    After some h/w upgrades:

    LCD runned, but:no red color in picture! because DPI mode needs gaps in connection on color bus)
    I am planning to use FPGA to fix it issue, but maybe some later (need to done FPGA NAND flasher at first).
    And the worst - the frame rate is low (but maybe using of FPGA will fix it same)
    At the end, latest console scr =)
    Config of LTDC done.

    Next step - trying to use FPGA to fix color issue. Coming soon =)

  • One little step

    Vasilii Chumakov07/01/2019 at 15:59 0 comments

    Last week progress:

    1. fix usb->uart based on cp2102 - done

    2. simple VT100 console - done

    5.2. utils for control i2c devices - done

    Plans on next week:

    3. dynamic memory allocator

    4. supporting FAT32

    5.1. fs utils: ls, cat, rm, du

  • First stage: planning of bootloader

    Vasilii Chumakov06/25/2019 at 13:07 2 comments

    Bootloader must be written in internal STM32 flash memory. It is no OS bare metal program with simple utils for system control and execute main firmware in SDRAM (based on FreeRTOS or linux).

    Implementation plan (July - August):

    1. Fix issue with my china usb->uart based on cp2102 (need to re solder chip)

    2. Develop VT100 terminal emulator for supporting utils executing (with direct calls main routines of application)

    3. Develop compact dynamic memory allocator in SDRAM (maybe based on FreeRTOS model 4 allocator)

    4. Adding support of my FAT32 FS driver (supporting only read operation)

    4.b. Realization loader of binary files from SD card. Led blink test program.

    5. Write utils for control:

    5.1. FAT FS file system (ls, cat, rm, du)

    5.2. i2c devices (read, write and search devices on i2c bus)

    5.3. power controller (enable/disable phases, set up and check voltages)

    5.4. boot nand of FPGA (write/read/verify operations)

    5.5. frame buffer and LTDC module configuration (util must load BMP pictures from SD card and showing it on LCD)

    6. Program booting NAND flash of ESP8266 (maybe need to re solder chip on PCB for connect it to NodeMCU devkit)

    7. Write basic util for GSM modem control (init, get rssi/snr/status, make calls)

    8. Write basic util for control of ESP8266 (init, connect to AP, show list of APs), be called as "wctl"

    9. Upgrade FAT32 FS for supporting write operations (same add cp util)

    10. Upgrade "wctl" for download files from FTP to SD card

    11. ELF loader (September)

View all 6 project logs

Enjoy this project?



arthurb wrote 06/30/2019 at 13:01 point


  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates