View Source MangoPi MQ Pro Support

CircleCI Hex version

This is the base Nerves System configuration for the MangoPi MQ Pro.

This is a work in progress. It may change in backwards incompatible ways and the documentation might be lacking.

To do:

  • [x] Bring up WiFi
  • [ ] Verify Blue PWM LED (was working with Linux 5.14, but broke with 5.18)
  • [?] Fix MicroSD flakiness on boot
  • [x] Verify USB host-only port (works with USB Flash drive)
  • [ ] Fix USB gadget mode on OTG port
  • [ ] Verify SPI
  • [ ] Verify I2C
  • [ ] Verify all GPIO work
  • [x] Verify HW watchdog
  • [x] Check that TARGET_GCC_FLAGS are right
  • [x] Update Linux kernel to 5.18
  • [x] Implement A/B firmware updates work
  • [x] Use SID for serial number
  • [ ] Reduce prints and shorten boot time
  • [ ] Verify HDMI

MangoPi MQ Pro

<sup>[Image credit](#mangopi)</sup>
CPU1 GHz 64 bit RISC-V
Memory512 MB or 1 GB DRAM
Linux kernel5.18 w/ patches
IEx terminalUART ttyS0
GPIO, I2C, SPIYes - Elixir Circuits
DisplayYes, but not supported yet
PWMYes, but no Elixir support
WiFiOnboard WiFi
HW WatchdogYes



The most common way of using this Nerves System is create a project with mix and add mangopi references where needed and in a similar way to the default systems like bbb, etc. Then export MIX_TARGET=mangopi. See the Getting started guide for more information.

If you need custom modifications to this system for your device, clone this repository and update as described in Making custom systems.


Example use

This example assumes some familiarity with Nerves. To use this system, you'll need OTP 25. Follow the Nerves installation instructions for additional system dependencies.

Creating a new hello world application:

mix hello_mango
cd hello_mango

Open up your mix.exs and add :mangopi_mq_pro to the @all_targets list at the top. It's ok to delete targets that you don't plan on using.

Then add the :nerves_system_mango_mq_pro dependency to the deps function:

    {:nerves_system_mangopi_mq_pro, "~> 0.1", runtime: false, targets: :mangopi_mq_pro},

This will load the latest released version. To use the latest code on the main branch here, add the following line:

    {:nerves_system_mangopi_mq_pro, runtime: false, targets: :mangopi_mq_pro, nerves: [compile: true], git: "", branch: "main"}

To build and write to a MicroSD card, run:

export MIX_TARGET=mangopi_mq_pro
mix deps.get
mix firmware
mix burn


Console access

The console is configured to output to the UART on pins 8 and 10 on the 40-pin GPIO connector. This is just like the Raspberry Pi. A 3.3V FTDI cable is needed to access the output.



The board has two network interfaces, a WiFi module and a virtual Ethernet on the USB C connector marked "OTG".



The most helpful Allwinner D1 information comes from All of the work here wouldn't have been possible with out it. Thanks especially to smaeul's Allwinner D1 Linux fork

Here are more useful links:

Image credit: This image is from