Received Your Orange Pi One Board? You’ll Need to Tweak Your FEX File / script.bin
[Update: I’ve been informed that for some unknown reasons the voltage regulator outputs 1.3 and 1.5V instead of 1.1 and 1.3V on Orange Pi One with the settings and FEX file below, which could lead to overheating, and possibly damage the board under heavy load. A workaround is available here]
[Update2: And the temperatures reported by the kernel are wrong (too low), so it’s better not to use the higher voltage at all. More details and tests @ http://forum.armbian.com/index.php/topic/617-wip-support-for-the-upcoming-orange-pi-one/page-4#entry5261]
Orange Pi One is arguably the cheapest ARM Linux development board with networking available today for $9.99 plus shipping. It is very similar to Orange Pi PC with an Allwinner H3 quad core Cortex A7 processor, Ethernet, and HDMI, but has less memory as it comes with 512MB RAM instead of 1GB, and comes with a few less features too. The bad news is that Shenzhen Xunlong did not release any new firmware for Orange Pi One so far, but the good news is that Orange Pi PC firmware files work on Orange Pi One board.
However, there’s an important hardware modification between Orange Pi PC and Orange Pi One, as SY8106A voltage regulator used in the former is controlled via I2C, while the former as a simpler SY8113B adjustable through GPIO, so thermal throttling wont work by default, and you’ll get plenty of error messages in the log that look like:
[ARISC ERROR] :message process error
[ARISC ERROR] :message addr : f004b840
[ARISC ERROR] :message state : 5
[ARISC ERROR] :message attr : 2
[ARISC ERROR] :message type : 30
[ARISC ERROR] :message result : ff
[ARISC WARING] :callback not install
[cpu_freq] ERR:set cpu frequency to 1008MHz failed!
So Thomas, a developer and member of sunxi-linux community, looked into it and found that all you needed to do what to modify cooler_table and dvfs_table sections in the FEX file used to configure the hardware based on Allwinner processors:
cooler_count = 4
cooler0 = "1200000 4 4294967295 0"
cooler1 = "1008000 4 4294967295 0"
cooler2 = "816000 4 4294967295 0"
cooler3 = "648000 1 4294967295 0"
pmuic_type = 1
pmu_gpio0 = port:PL06<1><1><2><1>
pmu_level0 = 11300
pmu_level1 = 1100
;extremity_freq = 1296000000
max_freq = 1200000000
min_freq = 648000000
LV_count = 2
LV1_freq = 1200000000
LV1_volt = 1300
LV2_freq = 648000000
LV2_volt = 1100
So the new and lower cost PMIC only supports 1.1 and 1.3V which will let the processor run up to 648 MHz and 1.2 GHz respectively. The chart below shows the number of active CPUs, CPU voltage and CPU frequency (right scale), CPU usage in percent and SoC temperature (left scale) over about 20 minutes. In the first part the system is made to switch between , and after sysbench and cpuburn-a7 utility running, and showing how the system decreases the frequency, then voltage, then number of cores used as the temperature gets to close to 90 C.
If you just want something that works, you’ll just need to replace script.bin in the FAT partition of the SD card after you flash the firmware. I don’t own have the board to test, but I created Orange Pi One FEX file from the Orange Pi PC one, with modification from Thomas (See comments below) and generated the corresponding script.bin, which you need to rename and copy to your bootable SD card. This will most probably soon be included in the latest community firmware releases. You can experiment with FEX files (text) and script.bin (resulting binary) using sunxi-tools in Linux.