OrangePiPc

Da wiki.piffa.net.
Orange Pi Pc

Orange Pi e' una famiglia di system on a board, simile a RaspberryPi. Sono disponibili vari modelli tra cui alcuni dotati di porte SATA, gigabit. Il Modello PC invece e' il piu' economico: per circa 14euro mette comunque a disposizione 1GB di RAM, CPU 4core, HDMI, 3 USB 2.0 + 1 OTG.

Su questa scheda girano versioni di Linux Debian, Ubuntu, RaspBian, Arch, Suse, Kali, Fedora, Android. I sistemi operativi e le rispettive immagini non sono binary compatible con RPI: non potete far girare la vostra SD di RPI su Orange pi e viceversa, ma sono disponibili le versioni per Orange.

Nota: la scheda di memoria e' una microSD e non una SD come RaspberryPi.

Specs[modifica]

  • SoC – Allwinner H3 quad core Cortex A7 @ 1.6 GHz (likely 1.2 GHz instead) with an ARM Mali-400MP2 GPU up to 600 MHz
  • System Memory – 1GB DDR3
  • Storage – micro SD card slot (up to 64GB)
  • Video Output – HDMI with CEC and HDCP support, AV port
  • Audio I/O – HDMI, AV port, on-board microphone
  • Connectivity – 10/100M Ethernet
  • USB – 3x USB 2.0 host ports, 1x micro USB OTG port
  • Camera – CSI Interface
  • Expansions – 40-pin Raspberry Pi compatible header with 28 GPIOs, UART, I2C, SPI, PWM, CAN, I2S, SPDIF, LRADC, ADC, LINE-IN, FM-IN, and HP-IN
  • Debugging – 3-pin UART header for serial console
  • Misc – IR receiver; Power button; Power and status LEDs
  • Power Supply – 5V/2A via barrel jack (micro USB OTG cannot be used to power the board).
  • Dimensions – 85 x 55 mm (vs 93 x 60 mm for Orange Pi 2)
  • Weight – 38 grams


Links[modifica]

Installazione[modifica]

La procedura di installazione e' abbastanza semplice e spiegata nei seguenti link (testata la release Debian Jessie):

Si dovra' scaricare l'immagine preconfigurata *.img per la scheda SD e l'archivio scriptbin_kernel.tar.gz contenente un kernel aggiornato e uno script aggiornato per gestire l'sucita video da copiare nella partizione di boot /dev/sd#1 della scheda SD. Se non si usa il kernel e lo script.bin aggiornati contenuti nell'archivio scriptbin_kernel.tar.gz potrebbero non funzionare tutte le porte USB, kernel panic o blocco del boot (morale: utilizzate quelli aggiornati!) Per la versione economica OrangePi PC si utilizzi la uImage_OPI-2 contenuta nell'archivio scriptbin_kernel.tar.gz , lo script di avvio sara' script.bin.OPI-PC_* in base al tipo di connessione video (per un monitor HDMI a 1080p ha funzionato script.bin.OPI-PC_1080p60).

Al boot il sistema operativo richiede un IP tramite DHCP, SSH server e' attivo. Le password di root e dell'utente di sistema orangepi e' orangepi.

Al boot si provveda ad aggiornare /etc/apt/sources.list con i mirror italiani e a RIGENERARE le chiavi per SSH: rm -v /etc/ssh/ssh_host_* dpkg-reconfigure openssh-server

Troubleshooting alimentazione[modifica]

Il vero problema di questa scheda e principale causa di problemi di istallazione e' l'alimentazione: nessuno degli alimentatori a 5v per 2A / 2.5A da me provati e' stato in grado di far avviare la scheda. Una soluzione potrebbe essere di acquistare la scheda in boundle con l'alimentatore che e' da 3A e non 2a come consigliato (non testato, ma si spera che con quello vada!), oppure provare con un alimentatore switching da LED (in arrivo..). Vari utenti hanno controllato i consumi (http://www.boincitaly.org/forum/hardware/114062-orange-pi-pc.html?limitstart=0) e fortunatamente sembra che questi siano comunque contenuti: 0,08A in idle a 0,15~0,20A sotto cario.

Troubleshotting:

  • Collegato al power non si accende niente: non avete abbastanza corrente
  • Collegato al power si accende il LED rosso di stato (dietro alla porta USB OTG) e i LED della scheda di rete ma non succede niente: non avete abbastanza corrente. Si puo' provare piu' volte anche con la stessa alimentazione e magari il sistema potrebbe partire (ma non completare il boot).
  • Collegato al power il sistema si avvia ma il boot si interrompe: non avete abbastanza corrente.

In tutti questi casi il problema e' stato l'alimentazione, non i file di configurazione. Il sistema infatti e' poi partito (con un alimentazione superiore ai 2.5a) sia con uImage e script.bin originali (quelli della ISO) che con quelli aggiornati dell'archivio scriptbin_kernel.tar.gz, lo schermo e' andato con un po' tutte le combinazioni per 1080p sia originali che dallo script scriptbin_kernel.tar.gz .

Altra soluzione economica: comprare il boundle scheda con solo cavo USB per avere lo spinotto della misura giusta (4mm spessore esterno con interno punta giallo, positivo interno - negativo fuori) per poi utilizzarlo con un alimentatore a 5v disponibile.

Impressioni d'uso[modifica]

Il sistema si dimostra molto piu' potente e responsivo di RPI modello 1, sia per velocita' pura nel singolo task che per il fatto di essere un quad core: mentre la scheda e' impegnata in qualche processo si riesce a lavorare agevolmente. La scheda di rete lavora a 11.2 MB/s contemporaneamente alla scrittura su SD mentre RPi condivide il BUS USB per entrambe (quindi anche la rete risulta piu' lenta).

Lo svantaggio e' dato dall'alimentazione: dovrete avere un alimentatore dedicato, non potete alimentarla da USB OTG. Per altro e' consigliabile un dissipatore per raffreddare la CPU. Non c'e' il WiFi onboard ma la 10/100 funziona alla massima banda. Per un uso workstation resta troppo lenta, per quanto sia riuscita a far girare KDE e Konqueror, Firefox / Iceweasel gira ma non a un livello usabile (ma potrebbe essere una questione di ottimizzazione e velocita' della SD, serviranno altre prove). Non dovrebbe aver problemi come thin client.

Benchmark[modifica]

OrangePI:~:$ uname -a
Linux OrangePI 3.4.39 #1 SMP PREEMPT Mon Oct 12 12:02:29 CEST 2015 armv7l GNU/Linux
OrangePI:~:$ lsb_release -d
Description:    Debian GNU/Linux 8.2 (jessie)

OrangePI:~:$ lscpu 
Architecture:          armv7l
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    4
Socket(s):             1
CPU max MHz:           1536.0000
CPU min MHz:           480.0000

OrangePI:~:$ free
             total       used       free     shared    buffers     cached
Mem:       1026964     125408     901556       8672      11636      48116
-/+ buffers/cache:      65656     961308
Swap:            0          0          0

OrangePI:/tmp:$ wget http://chrome/file
--2015-11-22 01:29:21--  http://chrome/file
Resolving chrome (chrome)... 192.168.0.254
Connecting to chrome (chrome)|192.168.0.254|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 104857600 (100M) [application/octet-stream]
Saving to: ‘file’

file                100%[=====================>] 100.00M  11.2MB/s   in 8.9s   

2015-11-22 01:29:30 (11.2 MB/s) - ‘file’ saved [104857600/104857600]


OrangePI:~/linpack:$ ./linpack 
Enter array size (q to quit) [200]:  
Memory required:  315K.


LINPACK benchmark, Double precision.
Machine precision:  15 digits.
Array size 200 X 200.
Average rolled and unrolled performance:

    Reps Time(s) DGEFA   DGESL  OVERHEAD    KFLOPS
----------------------------------------------------
      64   0.54  89.36%   3.32%   7.32%  174931.601
     128   1.08  89.35%   3.32%   7.33%  174872.086
     256   2.17  89.35%   3.32%   7.33%  174925.334
     512   4.34  89.34%   3.33%   7.34%  174811.959
    1024   8.68  89.35%   3.32%   7.33%  174750.267
    2048  18.31  89.36%   3.31%   7.34%  165761.260


Questo invece e' sulla mia RPI REV 1 Model B (modello vecchio con 256MB RAM):

eaman@rpi:~/linpack$ uname -a
Linux rpi 3.18.0-trunk-rpi #1 PREEMPT Debian 3.18.5-1~exp1+rpi19 (2015-08-08) armv6l GNU/Linux

LINPACK benchmark, Double precision.
Machine precision:  15 digits.
Array size 200 X 200.
Average rolled and unrolled performance:

    Reps Time(s) DGEFA   DGESL  OVERHEAD    KFLOPS
----------------------------------------------------
      32   0.90  88.07%   3.37%   8.55%  53427.350
      64   1.80  88.03%   3.36%   8.60%  53440.084
     128   3.60  88.03%   3.38%   8.59%  53422.528
     256   7.20  88.03%   3.39%   8.58%  53423.055
     512  14.40  88.03%   3.38%   8.59%  53433.026

RaspberryPi 2

pi@raspberrypi ~/linpack $ uname -a
Linux raspberrypi 4.1.12-v7+ #824 SMP PREEMPT Wed Oct 28 16:46:35 GMT 2015 armv7l GNU/Linux
pi@raspberrypi ~/linpack $ ./linpack
Enter array size (q to quit) [200]:
Memory required:  315K.


LINPACK benchmark, Double precision.
Machine precision:  15 digits.
Array size 200 X 200.
Average rolled and unrolled performance:

    Reps Time(s) DGEFA   DGESL  OVERHEAD    KFLOPS
----------------------------------------------------
      64   0.83  89.85%   2.85%   7.30%  114387.400
     128   1.66  89.83%   2.86%   7.31%  114389.856
     256   3.32  89.83%   2.86%   7.31%  114387.660
     512   6.63  89.83%   2.86%   7.31%  114392.759
    1024  13.26  89.83%   2.86%   7.31%  114388.749

Banana Pi:

root@bananapi:~/linpack# ./linpack
Enter array size (q to quit) [200]:
Memory required:  315K.


LINPACK benchmark, Double precision.
Machine precision:  15 digits.
Array size 200 X 200.
Average rolled and unrolled performance:

    Reps Time(s) DGEFA   DGESL  OVERHEAD    KFLOPS
----------------------------------------------------
      64   0.86  89.88%   2.83%   7.29%  110662.189
     128   1.71  89.57%   2.84%   7.59%  110942.252
     256   3.42  89.71%   2.83%   7.46%  111025.951
     512   6.86  89.62%   2.93%   7.45%  110701.895
    1024  13.70  89.78%   2.84%   7.38%  110789.002


Riferimenti per riprodurre Linkpack benchmark:

apt-get install gcc libc6-dev
mkdir linpack
cd linpack/
wget http://www.netlib.org/benchmark/linpackc.new
mv linpackc.new linpackc.c
gcc -O3 -o linpack linpackc.c -lm

Ringraziamenti agli utenti di HWUpgrade su questo thread per aver aggiunto i loro bench: http://www.hwupgrade.it/forum/showthread.php?t=2743629

GPIO[modifica]

Libreria per GPIO: https://github.com/zhaolei/WiringOP

OrangePI:~:$ gpio readall
 +-----+-----+----------+------+---+--OrangePiPC--+---+------+---------+-----+--+          
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |          
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+          
 |     |     |     3.3v |      |   |  1 || 2  |   |      | 5v       |     |     |          
 |   2 |  -1 |    SDA.0 |      |   |  3 || 4  |   |      | 5V       |     |     |          
 |   3 |  -1 |    SCL.0 |      |   |  5 || 6  |   |      | 0v       |     |     |
 |   4 |   6 | IO6 PA06 |  OUT | 0 |  7 || 8  |   |      | TxD3     |     |     |
 |     |     |       0v |      |   |  9 || 10 |   |      | RxD3     |     |     |
 |  17 |  -1 |     RxD2 |      |   | 11 || 12 | 0 | OUT  | IO1 PD14 | 1   | 18  |
 |  27 |  -1 |     TxD2 |      |   | 13 || 14 |   |      | 0v       |     |     |
 |  22 |  -1 |     CTS2 |      |   | 15 || 16 | 0 | OUT  | IO4 PC04 | 4   | 23  |
 |     |     |     3.3v |      |   | 17 || 18 | 0 | OUT  | IO5 PC07 | 5   | 24  |
 |  10 |  -1 |     MOSI |      |   | 19 || 20 |   |      | 0v       |     |     |
 |   9 |  -1 |     MISO |      |   | 21 || 22 |   |      | RTS2     |     |     |
 |  11 |  -1 |     SCLK |      |   | 23 || 24 |   |      | SPI-CE0  |     |     |
 |     |     |       0v |      |   | 25 || 26 |   |      | CE1      |     |     |
 |   0 |  -1 |    SDA.1 |      |   | 27 || 28 |   |      | SCL.1    |     |     |
 |   5 |   7 |  IO7 PA7 |  OUT | 0 | 29 || 30 |   |      | 0v       |     |     |
 |   6 |   8 |  IO8 PA8 |  OUT | 0 | 31 || 32 | 0 | OUT  | IO9 PG08 | 9   | 12  |
 |  13 |  10 | IO10 PA9 |  OUT | 0 | 33 || 34 |   |      | 0v       |     |     |
 |  19 |  12 | IO12PA10 |  OUT | 0 | 35 || 36 | 0 | OUT  | IO13PG09 | 13  | 16  |
 |  26 |  14 | IO14PA20 | ALT3 | 0 | 37 || 38 | 0 | OUT  | IO15PG06 | 15  | 20  |
 |     |     |       0v |      |   | 39 || 40 | 0 | OUT  | IO16PG07 | 16  | 21  |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+--OrangePIPC--+------+----------+-----+-----+

OrangePI:~/gpio/WiringOP:# ls /sys/class/gpio_sw/
normal_led  PA13  PA15  PA3  PA7  PA9  PC4  PD14  PG7  PG9   standby_led
PA10        PA14  PA21  PA6  PA8  PC3  PC7  PG6   PG8  PL10

Orange Pi 2 GPIO Pinout.png