Orange Pi One Board Quick Start Guide with Armbian Debian based Linux Distribution

Orange Pi One board is the most cost-effective development board available on the market today, so I decided to purchase one sample on Aliexpress to try out the firmware, which has not always been perfect simply because Shenzhen Xunlong focuses on hardware design and manufacturing, and spends little time on software development to keep costs low, so the latter mostly relies on the community. Recently, armbian has become popular operating systems for Linux ARM platform in recent months, so I’ve decided to write a getting started guide for Orange Pi One using a Debian Desktop image released by armbian community.

Orange Pi One Unboxing

But let’s start by checking out what I received. The Orange Pi One board is kept in an anti-static bag, and comes with a Regulatory Compliance and Safety Information sheet, but no guide, as instead the company simply asks users to visit www.orangepi.org to access information to use their boards.

Click to Enlarge

The top of the board have the most interesting bits with Ethernet, micro USB and USB ports, HDMI port, micro SD slot, power jack, a power button, the 40-pin “Raspberry Pi” compatible header, Allwinner H3 processor and one Samsung RAM chip. The 3-pin serial console header can be found right next (under in the pic) to the RJ45 jack.

Click to Enlarge

The bottom of the board features another Samsung RAM chip (512MB in total), and the camera interface.

Click to Enlarge

I’ve also taken a picture to compare Orange Pi One dimensions to the ones of Orange Pi 2 mini, Raspberry Pi 2, and Raspberry Pi Zero.

Click to Enlarge

By the way, while the official prices for Raspberry Pi ($5), Orange Pi One ($9.99), and C.H.I.P ($9) are a little different, I ended up paying about the same for all three boards once shipping is included: £9.04 (or about $12.77) for Raspberry Pi Zero, $13.38 for Orange Pi One, and $14.22 for C.H.I.P (Cyber Monday deal for “$8”). C.H.I.P computer is not shown in the picture above simply because I have not received it yet. The performance of Orange Pi One will be much greater than the other thanks to its quad core processor as discussed on Raspberry Pi Zero, C.H.I.P and Orange Pi One comparison.

Installing and Setting Up Armbian on Orange Pi One

While the company claims your can download firmware on Orange Pi Download page, they have not published a firmware image specifically for Orange Pi One, and while you could probably use an Orange Pi PC image (this may mess up with regulator), I’ve never heard anyone ever praise Shenzhen Xunlong for the quality of the images they’ve released, quite the contrary.  While Orange Pi community member Loboris released several images for Allwinner H3 boards, he does not seem to have updated them for Orange Pi One, and I’ve heard a lot about armbian distribution recently based on Debian and targeting ARM Linux boards, so that’s the image I’m going to try.

You can currently download Debian Jessie server or desktop based on Linux 3.4 legacy kernel, but once the Ethernet driver gets into Linux mainline (aka Vanilla), you’ll be able to run the latest Linux mainline on Orange Pi One, at least for headless operation.

First you’ll need to get yourself a 8GB or greater micro SD card preferably with good performance (Class 10 or better), and use a Windows, Mac OS and Linux computer to download and flash the firmware image.

I’ve done so in Ubuntu 14.04. Once you insert the micro SD card into the computer, you may want to located the SD card with lsblk:


I used a 32GB class 10 micro SD card, and in my case the device is /dev/sdb. I’m going to use the command line, but you can use ImageWriter for Ubuntu or Windows, as well as some other tools for Mac OS. Let’s download the firmware, extract it, and flash it to the micro SD card (replace /dev/sdX by your own device):


Now insert the micro SD card into Orange Pi One, and connect all necessary cables and accessories. I connected HDMI and Ethernet cables, a RF dongle for an air mouse, a USB OTG adapter for a USB flash drive, the serial debug board, and the power supply. Please note that the micro USB port cannot be used to power the board, so you’ll either need to purchase the power adapter, or an inexpensive USB to 4.0/1.7mm power jack adapter to use with a 5V/2A USB power adapter.

As you connect the power supply, the red LED should lit, and after a few seconds, you should see the kernel log on the HDMI TV or monitor. I also access the serial console via a UART debug board, but it will only show the very beginning, and once the framebuffer is setup most message are redirected to the monitor. This is what I got for the first boot in the serial console:


But I got many error messages on the TV reading “[cpu_freq] ERR: set cpu frequency top 1296MHz failed!”. Those are actually normal because a single firmware image is used for all Orange Pi Allwinner H3 boards, and they use different regulators. The message will disappear subsequently once the system will have detected an Orange Pi One.

You may have to be patient the first few minutes of the very first boot (2 to 3 minutes) as you see the error messages above looping seemingly forever, as the system is resizing the root file system partition, creating a 128Mb emergency swap area, creating the SSH key, and updating some packages. Once this is all done, the system will reboot, and you’ll be asked to change the root password, create a new user, and adjust the resolution with h3disp utility which will automatically patch script.bin file in the FAT32 boot partition of your micro SD card. The default credentials are root with password 1234.

Welcome screen and new account creation after changing root password
H3disp options

H3disp utility allows you to choosen the resolution and refresh rate of your system, and I select 1080p50, and rebooted the board one last time, and after about 20 seconds, I could get to the Debian XFCE desktop.

Click for Original Size

The resolution of the desktop is indeed 1920×1080, Ethernet is working, but my keyboard layout does not match as the default layout is for Slovenian language. I went to Settings->Keyboard to change that.

And it seemed to work randomly as I sometimes got a QWERTY keyboard, but other times it would revert to a QWERTZ keyboard, and I’m not sure why. Following the instructions on armbian documentation using:


did not completely solve my issue either at first, but it seems to be fine now…

I’ve also noticed some permissions issues starting with the network which requires sudo for ping and iperf, and likely to CONFIG_ANDROID_PARANOID setting in the kernel configuration. My USB flash drive was also not automatically mounted, and I had to use the sudo to mount the drive manually too.

Most people will also likely need to change the timezone with:


Let’s check some parameters with the command line:


The system is running sunxi Linux 3.4.110 kernel, and Debian 8. The processor max frequency is set to 1.2 GHz as it should be, the GPIOs appear to be supported just like in Orange Pi 2 mini (but less I/Os are shown), total RAM is 494MB, and 2.1GB is used out of the 29GB root partition in the micro SD card. I know some ARM boards can’t be powered off properly, but it’s not the case with Orange Pi One as I could turn it off cleanly with the power LED turning off at the end of the shutdown process.

That’s all for this guide, and I’ll showcase 3D graphics and video hardware decoding in a separate post (Update: the post is up). You can get further by checking out Armbian Orange Pi One page, following the instructions to build your own Armbian image, and browsing Orange Pi One thread in armbian forums.

Share this:

Support CNX Software! Donate via PayPal or cryptocurrencies, become a Patron on Patreon, or buy review samples

34 Replies to “Orange Pi One Board Quick Start Guide with Armbian Debian based Linux Distribution”

  1. Thanks for this, I will be glad to use it shortly.
    Could you please check if there is an I2S port supported, normally on the 40-pin connector ? I’m not sure what to look at precisely, it seems that “lsmod | grep i2s ” could be useful, and maybe “aplay -l”.
    This card could be great to provide a nice sound box if I2S is supported. Alternatively, it seems that the CHIP has a built-in audio codec, making it a yet simpler solution.

  2. @Eric D.
    That’s lsmod output:

    Checking the schematics would be useful too @ http://linux-sunxi.org/File:ORANGE_PI-ONE-V1_1.pdf

  3. @Eric D.
    I2S is supported but you have to tweak script.bin, just have a look in the H3 section in Armbian forum. I2S and other important stuff are pinned ‘tutorial like’ threads.

    It should be noted that the version Jean-Luc tested is rather outdated (already 8 days old!), we fixed a lot of stuff in the meantime but this is still work in progress and a lot things need more improvement. Unfortunately the majority of Armbian devs use their devices headless or for server stuff so while we’re at it fixing GUI/desktop stuff it could improve a lot more if devs more familiar with this stuff would also join development.

    And it should be noted that regarding desktop useage the OPi PC for $5 more is definitely the better choice (more RAM, more connectors, more USB ports that do not have to share bandwidth and therefore the ability to move rootfs/homedir to a connected USB disk which improves ‘desktop performace’ a lot!)

  4. @Mark Birss
    If Diet Pi still relies on loboris’ settings then you fry the poor device unnecessarily and it runs slower than necessary. I would check ‘dmesg’ output for ARISC errors, ‘cat /sys/class/thermal/thermal_zone1/temp’ and ‘cat /proc/interrupts’.

  5. @cnxsoft
    BTW: That you find less available GPIOs exposed with Armbian, OpenELEC or more recent loboris settings has a simple reason: The OS images Xunlong shipped simply defined every pin on the GPIO header as ‘GPIO’ therefore preventing use of I2C, SPI, I2S and all the other ‘non GPIO’ stuff. At Armbian we try to coordinate our settings with Jernej’s H3 OpenELEC fork https://github.com/jernejsk/OpenELEC-OPi2 so that users who want to switch between Armbian and OpenELEC will find identical environments.

    And BTW: Now that you’re using Armbian RPi-Monitor installation is just ‘sudo armbianmonitor -r’ 😉

  6. @tkaiser

    Ah ok, thank you for your comments

    been using it with heat sink

    root@DietPi:~# dmesg | grep error
    [ 10.407505] gpio_sw: probe of gpio_sw.0 failed with error -12
    [ 10.407533] gpio_sw: probe of gpio_sw.1 failed with error -12

    root@DietPi:~# cat /sys/class/thermal/thermal_zone1/temp
    57

    root@DietPi:~# cat /proc/interrupts
    CPU0 CPU1 CPU2 CPU3
    29: 39158 30278 61758 23715 GIC arch_timer
    30: 0 0 0 0 GIC arch_timer
    32: 6 0 0 0 GIC uart0
    38: 0 0 0 0 GIC twi0
    43: 0 0 0 0 GIC PA
    49: 0 0 0 0 GIC PG
    50: 0 0 0 0 GIC sunxi_timer0
    63: 0 0 0 0 GIC Thermal
    72: 0 0 0 0 GIC sunxi-rtc alarm
    77: 0 0 0 0 GIC PL
    81: 0 0 0 0 GIC arisc_hwmsgbox_irq
    82: 0 0 0 0 GIC sunxi_dmac
    90: 0 0 0 0 GIC cedar_dev
    92: 123692 0 0 0 GIC sunxi-mmc
    93: 52 0 0 0 GIC sunxi-mmc
    104: 0 0 0 0 GIC ehci_hcd:usb1
    105: 0 0 0 0 GIC ohci_hcd:usb3
    106: 4973 0 0 0 GIC ehci_hcd:usb2
    107: 0 0 0 0 GIC ohci_hcd:usb4
    114: 12043 0 0 0 GIC gmac0
    118: 112723 0 0 0 GIC dispaly
    129: 0 0 0 0 GIC Mali_GP
    130: 0 0 0 0 GIC Mali_GP_MMU
    131: 0 0 0 0 GIC Mali_PP0
    132: 0 0 0 0 GIC Mali_PP0_MMU
    134: 0 0 0 0 GIC Mali_PP1
    135: 0 0 0 0 GIC Mali_PP1_MMU
    IPI0: 0 0 0 0 CPU wakeup interrupts
    IPI1: 0 0 0 0 Timer broadcast interrupts
    IPI2: 9067 10411 6742 8091 Rescheduling interrupts
    IPI3: 134 159 54 157 Function call interrupts
    IPI4: 1 2 1 3 Single function call interrupts
    IPI5: 0 0 0 0 CPU stop interrupts
    IPI6: 0 0 0 0 CPU backtrace
    IPI7: 0 0 0 0 completion interrupts
    Err: 0

  7. @Mark Birss
    57°C seems a bit hot but no ARISC errors are a good sign. Did you execute my ‘fix-thermal-problems.sh’ script known from the Orange Pi forums? Does also adjust the different voltage regulator in the latest version. And you’ll see improved performance when you distribute USB and network IRQs to different CPU cores just like Armbian does it.

  8. And another note regarding SD cards: You can use any SD card larger than 2GB with Armbian (automatic FS resize on first boot) but should be aware that fast cards help a lot when it’s about to use any SBC as ‘desktop’. And that doesn’t depend on the speed class (but please don’t buy anything that’s not at least Class 10) but way more on random I/O.

    The last two table rows here are the important ones if you don’t call the ‘nand-sata-install’ that also works with USB disks and moves the rootfs from SD card to faster storage: http://www.jeffgeerling.com/blogs/jeff-geerling/raspberry-pi-microsd-card

  9. @tkaiser
    Something weird happened this morning. The welcome screen in the serial interface shows Orange Pi 2 mini is detected, and I get the the message:

    Attention: It seems the image is running on Orange Pi 2 mini but you’re using wrong settings: orangepione.bin

    So it looks like auto-detection may not always work. Somehow the desktop background is also gone, so it could be the image is corrupted.

  10. @cnxsoft
    That was also my assumption and using the 1st USB hub I found here lying around I was able to reproduce that problem. Thx, now I know why this happens (we had a few reports) and we’ll fix it with the next version (maybe removing all of the auto detection stuff and replacing it with a simple dialog)

  11. @zoobab
    I’m running Armbian with 4.x since months but we refrain from publishing OS images unless Ethernet is ready. But the build system is ready and a few Armbian users already got stuff like I2C, SPI and so on in a working state with Mainline…

  12. Having strange issues with the ethernet card of this OrangePi One. I’m trying to get AppleTalk working ( long story…check http://www.macip.net if you want to know…), but NO GO. It works OK with a USB network dongle.

    Could this be something with the hardware of this device? Or just wait for better support in the mainline kernel?
    If a 4.4 OS comes available I really would like to test if Netatalk with ddp will work!

  13. Installing these work for me to have proper langauge keyboard:

    sudo apt-get install console-data unicode-data language-pack-es-base

  14. Hello !
    I’m going to buy the Orange Pi One, and I don’t understand the ethernet problem people are talking about. Do I have to use a usb to ethernet adapter to connect it to the network ?
    Could you please enlighten me ?
    Thanks,

  15. @Ibrahim
    There are two versions of the Linux kernel:
    * Legacy Linux 3.4 kernel where basically everything works including Ethernet (That’s what I used in the tutorial above)
    * Vanilla (aka Mainline) Linux is the very latest version of the kernel (now 4.6 in development) where the Ethernet driver has not been fully implemented yet (but is getting close).

    For most people the legacy kernel will do, and Ethernet will work out of the box.

  16. @cnxsoft
    The funny thing is that the mainline Ethernet driver that is considered alpha quality already works better compared to Allwinner’s 3.4.x driver. The problem is somewhat exotic (AppleTalk multicasts get corrupted) but doesn’t occur with mainline kernel.

    @Ibrahim: Choose legacy kernel (and consider spending the $5 more by upgrading to the PC or at least reading through the Armbian forums a bit) since vanilla will have issues for quite some time…

  17. @tkaiser
    Actually, I’ve already ordered the PC, and I’m waiting for it to arrive. I am now considering the OPi One as a secondary cheap device to play around with.
    Maybe I’m mistaken, but legacy is the only kernel available on the OPi One download page ?
    I browse the Armbian forums regularly, but since I’m a linux noob, I can’t wrap my head around it all 🙂
    Thanks.

  18. @cnxsoft
    Oh, it’s just one nasty root exploit that works by simply doing this

    on affected machines (most probably exploitable through network too). Fix is in Armbian 5.10 and upgrading is just the usual ‘sudo apt-get update/upgrade’.

    Unfortunately many OS images for H3 boards aren’t maintained at all and other devices not supported by Armbian are also affected (Banana Pi M3 for example). More details in the security alert you linked to.

  19. @tkaiser
    Allwinner has issued a PR about that exploit:

    Allwinner Technology committed to resolving Linux Kernel software issue

    Zhuhai, China – Allwinner Technology.Co.Ltd (SHE: CN:300458) is working with its device manufacturers to fix a current software issue. We are aware that code, which was supplied to device manufacturers for the purpose of developing products, should have been removed prior to shipping. We recommend that anyone who is concerned about this issue should contact the relevant device manufacturer.

    In relation to the source code on Github, it is released for the open source community only and not for shipping certain devices. Since a debugging function is not needed it has subsequently been removed.

    Allwinner is committed to producing quality SoC’s with security a key priority. We are currently working hard to address this issue and revising our current processes so we can continue to evolve our range of SoC’s in the future.

  20. @cnxsoft
    Thx, Eva from Allwinner also contacted me directly. And for everyone concerned about the issue: please don’t believe the lurid headlines and be aware that this is neither a backdoor nor hidden (Allwinner provided the whole kernel code online and it has been found by accident 2 weeks ago since we’re able to look through the Android kernel sources!).

    This reader comment on arstechnica sums it up perfectly: http://arstechnica.com/security/2016/05/chinese-arm-vendor-left-developer-backdoor-in-kernel-for-android-pi-devices/?comments=1&post=31168921

  21. cant get past set cpu frequency top 1296MHz failed! waited for 1 hour. Not sure what is happening but i can still log in to the orange pi via ssh. So it has booted but cant get to desktop at all

  22. Hi
    I cant use my wirless keyboard to enter user name or password ?
    i dont have uart serial conector any solution please ?
    thanks.

Leave a Reply

Your email address will not be published.

Advertisement
Advertisement