Allwinner H3搭載のOrange piの機種間差異について(Orange pi 2 / pi mini 2 / pi PC)

Allwinner H3搭載のOrange piシリーズの違いについて、ハードウェアとOSの互換性に絞って解説。

2015/09/16現在、リリースされているAllwinner H3搭載のOrange piシリーズは下記の4機種
・Orange pi PLUS(OPi-PLUS)
Orange pi 2(OPi2)
Orange pi mini 2
Orange pi PC(OPi-PC)

まず、「Orange pi 2」と「Orange pi mini 2」はWiFi対応のためのチップの有無で、基盤自体は共通になるためどちらも「OPi2」としてとして扱われる。

「Orange pi PLUS」は、内蔵ストレージがある(eMMC)、SATAコネクタがある、など、差異が大きく、別扱いとなっている。

「Orange pi 2/mini 2」と「Orange pi PC」は、だいたい同じだが、特にUSB周りの構成が異なっている。
「Orange pi 2/mini2」では、基板上にUSBハブのチップが載っており、そこを経由してUSB機器を接続している。
「Orange pi PC」では、H3チップの持つUSBコントローラ機能を直接コネクタにつないでいる。
コスト削減になっているが、USB機器側でなにか変な動作した場合に、直接H3チップに影響がいくことになるため、壊れやすくはなっていると思われる。

機種間の差異はLinux起動時に読み込まれる「script.bin」と「uImage」にて対応している。
/bootディレクトリか/media/bootディレクトリに配置されている。
また、HDMI出力時の解像度変更は「script.bin」内の設定で行われている。

script.binについては、ある程度汎用性があるようで、他の機種用に出ているOSのscript.binを置き換えて、無理やり対応させる、ということは可能。

uImageのほうは、Linux kernelと関係しているので、置き換えてもうまく動かない可能性の方が高い。

Orange pi PCをLinuxで使う方法 / lobris版UbuntuをOrange pi 2などで使う

Allwinner H3搭載のOrange pi PC(OPi-PC)でLinux OSを使う方法は2つあります。

1つは、公式がリリースしているLubuntu 14.04 LTSイメージを使用する。
もう1つは、フォーラムでloborisさんが公開しているUbuntu 15.04 / Debian 8イメージを使用する。

公式のLubuntu 14.04は、一見、特に問題なく動くように見えますが
よくよく見てみると/lib/modules/ディレクトリの下とか、/bootの下のファイルとかに整合性がとれて無い部分があってちょっとアレです。

もう1つのloborisさんが公開している方がちゃんとしている感じがします。
公開場所「Debian & Ubuntu for Orange PI H3 boards

このイメージは下記のAllwinner H3搭載機で動作します。
・Orange pi plus(WiFi,内蔵フラッシュストレージ,SATAコネクタ搭載)
・Orange pi 2(WiFi搭載)
・Orange pi mini 2(WiFi無し)
・Orange pi PC(WiFi無し)

機種間で差異がありますが、それは機種毎に用意されている「script.bin」と「uImage」を適切に配置することで対処できます。

初心者に優しくない導入手順

1. 配布ディレクトリから必要なイメージファイルを入手
 「~.img.xz」がディスクイメージファイルです。
 目的とするOSのものをダウンロードします。

2. 配布ディレクトリから、最新のscriptbin_kernel.tar.gzを入手
 ディスクイメージの日付とscriptbin_kernel.tar.gzの日付を比較し
 scritbinの方が新しい場合、これもダウンロードします。

3. xzファイルを解凍
 「7-Zip」などを使ってファイルを解凍します

4. Win32 Disk Imager などを使ってmicroSDにディスクイメージを書き込みます
 書き込み後のmicroSDは、FAT32のパーテーションと、ext4のパーテーションにわかれます。

5. FAT32パーテーションをマウントし「script.bin」と「uImage」をコピーする
 FAT32パーテーションの中にscript.bin.OPI-2_1080p50などのファイルがあります。
 必要なファイルをコピーして配置します。
 Orange pi 2とOrange pi mini 2の場合
  「script.bin.OPI-2_~」から使いたいHDMIの解像度のファイルを「script.bin」としてコピー
  「uImage_OPI-2」を「uImage」としてコピー
 Orange pi PCの場合
  「script.bin.OPI-PC_~」から使いたいHDMIの解像度のファイルを「script.bin」としてコピー
  「uImage_OPI-2」を「uImage」としてコピー
 Orange pi plusの場合
  「script.bin.OPI-PLUS_~」から使いたいHDMIの解像度のファイルを「script.bin」としてコピー
  「uImage_OPI-PLUS」を「uImage」としてコピー

6. Orange piにmicroSDを入れて起動

7. Orange piにログイン
 ユーザ名「orangepi」、パスワード「orangepi」

8. ファイルシステムの拡張
 そのままだとmicroSDの一部しか使われていないので、未使用領域も使える様にコマンドを実行
 「sudo fs_resize」
 パスワードは「orangepi」

9. 再起動
 「sudo reboot」

10. 再起動後、scriptbin_kernel.tar.gzをOrange piに転送

11. scriptbin_kernel.tar.gzを展開

12. 配布物にあるlib/modules/3.4.39/を/lib/modules/3.4.39/にコピーして置き換え

13. script.binとuImageを/media/boot/ にコピーして置き換え

14. 再起動

送料込みで18.15ドルのOrange pi PCが届いた

2016/11/07追記

わずか2000円強でAndroidやLinuxを動かせるギガビットLAN搭載のシングルボードコンピューター「Orange Pi PC2」が登場」で紹介されている、Orange Pi PC2に関する記事はこちら
  ↓
Allwinner H5搭載のOrange Pi PC2が$23.13で発売開始


送料込みで$18.15のRaspberry piみたいなやつの「Orange pi PC」が届いた。

(Orange pi PCについての情報は「Kickstarter案件つぶしのAllwinner H3搭載Orange pi PC $15」も参照のこと。)

8/26にFree shippingの「China Post Registered Air Mail」配送で発注を行い
8/31に発送連絡があり
9/2から日本郵政のEMSトラッキングで追跡できるようになり
9/6に通関し、9/7に到着しました。

IMG_5483s

箱と添付の紙はOrange Pi 2の時と同じものでした。
中身だけが違う

20150907_200506s

プラケースに入ってない方がOrange pi PC。
部品レイアウトが似た感じがあるものの、位置がいろいろ違い、Orange Pi 2用に穴開けたケースの流用はそのままでは無理そうだ。

HDMIコネクタと、USB2ポートとLANは同じような位置だけど
電源コネクタと、オーディオ/VIDEO端子の位置が大きくずれている。
また、基盤固定用のネジの位置も全然違う
20150908_011012s

さて、Orange pi PCは、OS部分をmicroSDに入れて起動する。
現在、使えるのはAndroidとLubuntu 14.0.4の2つ。
Orange pi 2と共通、というような記述が一部に見られたが、配布イメージ名がそれぞれ別なので、たぶん、違うんでしょう。
(例えばpi mini 2用のを使うと、起動して使えそうな感じはするものの、実際はUSBポートが一部動作しない、とかあるようです)

で、ダウンロードページには「Google Drive」と「Baidu Cloud」の2つが書いてありますが、Googleのリンクが動いていません。
Orange piのページでは良くあることで、基本Baiduからダウンロードで、Google Driveがあればラッキー、ぐらいに考えてください。

まぁ、Baiduは非常に遅い、というのもありますので、私がdropboxに転載したのも置いときます。
Lubuntu_1404_For_OrangePiPC_v0_8_0_.img.xz

Lubuntuは起動するとUbuntu 14.04.1 LTSです。
apt-get upgradeとapt-get updateを実行すると14.04.3 LTSになります。

20150907_204158

sshでログインすると、こんな感じです。

Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.4.39 armv7l)

 * Documentation:  https://help.ubuntu.com/

Last login: Mon Sep  7 19:54:20 2015 from 192.168.1.xxx
orangepi@orangepi:~$ su -
Password:
root@orangepi:~# uname -a
Linux orangepi 3.4.39 #41 SMP PREEMPT Sun Jun 21 13:09:26 HKT 2015 armv7l armv7l armv7l GNU/Linux
root@orangepi:~#

ちなみに、初期パスワードは「orangepi」です。

root@orangepi:~# cat /proc/cpuinfo
Processor       : ARMv7 Processor rev 5 (v7l)
processor       : 0
BogoMIPS        : 1920.00

processor       : 1
BogoMIPS        : 1920.00

processor       : 2
BogoMIPS        : 1920.00

Features        : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

Hardware        : sun8i
Revision        : 0000
Serial          : 1400519007185c240a8e
root@orangepi:~# cat /proc/meminfo
MemTotal:        1026864 kB
MemFree:          524968 kB
Buffers:           52156 kB
Cached:           260984 kB
SwapCached:            0 kB
Active:           270396 kB
Inactive:         175108 kB
Active(anon):     132964 kB
Inactive(anon):     8248 kB
Active(file):     137432 kB
Inactive(file):   166860 kB
Unevictable:          32 kB
Mlocked:              32 kB
HighTotal:        270336 kB
HighFree:          48768 kB
LowTotal:         756528 kB
LowFree:          476200 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        132444 kB
Mapped:            32356 kB
Shmem:              8848 kB
Slab:              32096 kB
SReclaimable:      21912 kB
SUnreclaim:        10184 kB
KernelStack:        2360 kB
PageTables:         3224 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      513432 kB
Committed_AS:    1249212 kB
VmallocTotal:     245760 kB
VmallocUsed:       29312 kB
VmallocChunk:     212992 kB
root@orangepi:~#

中身自体は、Linux kernelにかかわるところが独自なだけで、あとは普通にRaspberry用のUbuntu/Lubuntuです。
aptの設定に、Allwinner H3搭載のOrange pi用の設定がないので、機種依存となるkernel周りは、aptではアップデートされません。
なので、現状、インターネットに公開するサーバとしてOrange piを使用するには、不安なところです。

Kickstarter案件つぶしのAllwinner H3搭載Orange pi PC $15

2016/11/07追記

わずか2000円強でAndroidやLinuxを動かせるギガビットLAN搭載のシングルボードコンピューター「Orange Pi PC2」が登場」で紹介されている、Orange Pi PC2に関する記事はこちら
  ↓
Allwinner H5搭載のOrange Pi PC2が$23.13で発売開始


なんか、最近、いろんなKickstarter系案件にぶつけてくるような印象を受けるOrange piシリーズ。

5月末の「Lemon pi」対抗っぽい値下げ(参考記事)に続いて、今回は「CHIP」対抗っぽい新製品発売です。

えぇ、発表、ではなく、発売開始、です。
(2015/09/08追記:発注から約2週間で届きました→「送料込みで18.15ドルのOrange pi PCが届いた」)

今回発売されたのはOrange pi PCというもの

スペックは既存モデルのOrange pi 2 / Orange pi 2 miniとほぼ同等。
大きな違いはWiFiの有無、とUSBポートの数、です。

そして、値段が$15。

CHIPは$9ですが、CPUは大幅に負け(Cortex-A8 1コア vs Cortex-A7 4コア)、RAMも少量(512MB vs 1GB)。内蔵ストレージ(4GB)のみ勝っている。
が・・・一番早く手に入る開発者向けで2015年9月<予定>。
それ以外は、2015年12月~2016年5月にかけて入手できる<予定>。
ただし、現状は、スケジュールが順調に遅れています。

それに対して、このOrange pi PCは、既に発売が開始されています。

どうなるのかわからないものより、いま、稼働機が手に入るOrange pi PCを買ってしまいましょう!

いまなら「単品 $18.15(送料込)」「ケースセット $22.56(送料込)」「ケース+USB給電ケーブルセット $23.82(送料込)」「ケース+ACアダプタセット $27.44(送料込)」で入手可能です。

怪しいACアダプタを使いたくない、という人は、5V2A以上でEIAJ#2のジャックを持つやつを用意しておいてください。PSP用の電源と同じ形状だそうです。


さて・・・Allwinner H3搭載のOrange piシリーズでは、どのようなことが出来るのか?

Allwinner H3搭載のOrange piシリーズは現状下記の4機種あります。
・Orange pi Plus (WiFi搭載,SATAコネクタ搭載,内蔵ストレージ8GB) 送料込 $42.41
・Orange pi 2 (WiFi搭載) 送料込 $31.96
・Orange pi mini 2(WiFiなし) 送料込 $26.96
・Orange pi PC(WiFiなし) 送料込 $18.15

Orage pi 2 / Orange pi mini 2 / Orange pi PCは、3つとも、基本構成が同じであるため、同じOSイメージが使用できます。
Orange pi 2 / Orange pi mini 2 / Orange pi PCは、ほぼ同じような構成ではあるのですが、細部が異なるようで、異なる機種のOSイメージを使うと、フル機能が使えない場合があるようです。
また、Orange pi plusのみストレージ構成が大きく異なるため、差異が結構あります。
(2015/09/17追記「Allwinner H3搭載のOrange piの機種間差異について」という記事を作成しています)

このため、機種ごとに使えると提示されているOSが異なっています。

現時点で使用できるOSイメージは
・Linux
・Android
の2系統があります。

Linuxは、Allwinnerが提供しているLinux SDKベースに作成されており、Kernelは、Allwinner Linux SDKベースのバージョンを使っています。
それ以外のソフトウェア部分は、Raspberry pi用に提供されているソフトウェアレポジトリから持ってきているので、多くの用途には問題はないかと思います。

ただ、1つ、多大な問題点があります。それは、Linux Kernelの更新が提供されにくい、というところです。
いまのところ、LinuxのメインカーネルにAllwinner H3向けのものが取り込まれていないので、更新が遅いです・・・というか、提供されていない・・・
そこが一番のネックです。

Androidの場合
これもやはりAllwinner提供のAndroid SDKベースに作成されています。
標準ではGoogleアプリが導入されていないので、使い勝手は非常に微妙です。

Transmartというベンダから同じAllwinner H3搭載のAndroid STBが発売されているので、そちらのイメージをぱくってくるとうまく動くのかもしれません・・・(未検証)


下記は似たような感じのプロダクトを並べて見ました。

商品名 SoC SoCスペック RAM ストレージ WiFi LAN USB SATA
Raspberry Pi Model B+ Broadcom BCM2835 ARM1176JZF-S 1コア / 700MHz 512MB MicroSD なし 1 USB 2.0*4 なし
Raspberry Pi 2 Broadcom BCM2836 Cortex-A7 4コア / 900MHz 1GB MicroSD なし 1 USB 2.0*4 なし
Banana Pi BPi-M1+ Allwinner A20 Cortex-A7 2コア / 1GHz 1GB MicroSD b/g/n G*1 USB2.0*2 + USB2.0 OTG*1 あり
Banana Pi BPi-M2 Allwinner A31S Cortex-A7 4コア / 1GHz 1GB MicroSD なし G*1 USB2.0*2 + USB2.0 OTG*1 なし
Banana Pi BPi-M3 Allwinner A83T Cortex-A7 8コア / ?GHz 2GB eMMC + MicroSD なし G*1 USB2.0*2 + USB2.0 OTG*1 あり
Orange Pi Plus Allwinner H3 Cortex-A7 4コア / 1.6GHz 1GB eMMC8GB + MicroSD b/g/n G*1 USB2.0*4 + USB2.0 OTG*1 あり
Orange Pi 2 Allwinner H3 Cortex-A7 4コア / 1.6GHz 1GB MicroSD b/g/n 1 USB2.0*4 + USB2.0 OTG*1 なし
Orange pi Mini 2 Allwinner H3 Cortex-A7 4コア / 1.6GHz 1GB MicroSD なし 1 USB2.0*4 + USB2.0 OTG*1 なし
Orange pi PC Allwinner H3 Cortex-A7 4コア / 1.6GHz 1GB MicroSD なし 1 USB2.0*3 + USB2.0 OTG*1 なし
Lemon Pi Actions Semicon S500 Cortex-A9 4コア / ?GHz 512MB MicroSD wifi 1 ? USB3.0*1 + USB2.0*2 なし
CHIP Allwinner R8(A13相当) Cortex-A8 1コア/ 1.0GHz 512MB eMMC4GB + MicroSD wifi 1 ? USB2.0*? なし

参考情報

Orange pi 2用のRaspbianで「apt-get update」をした時のログ

root@orangepi:~# apt-get update
Hit http://raspberrypi.collabora.com wheezy Release.gpg
Hit http://raspberrypi.collabora.com wheezy Release
Hit http://raspberrypi.collabora.com wheezy/rpi armhf Packages
Ign http://raspberrypi.collabora.com wheezy/rpi Translation-en_GB
Ign http://raspberrypi.collabora.com wheezy/rpi Translation-en
Get:1 http://archive.raspberrypi.org wheezy Release.gpg [473 B]
Get:2 http://mirrordirector.raspbian.org wheezy Release.gpg [490 B]
Get:3 http://archive.raspberrypi.org wheezy Release [17.6 kB]
Get:4 http://mirrordirector.raspbian.org wheezy Release [14.4 kB]
Get:5 http://archive.raspberrypi.org wheezy/main armhf Packages [133 kB]
Get:6 http://mirrordirector.raspbian.org wheezy/main armhf Packages [6,904 kB]
Ign http://archive.raspberrypi.org wheezy/main Translation-en_GB
Ign http://archive.raspberrypi.org wheezy/main Translation-en
Get:7 http://mirrordirector.raspbian.org wheezy/contrib armhf Packages [23.6 kB]
Get:8 http://mirrordirector.raspbian.org wheezy/non-free armhf Packages [49.3 kB]
Get:9 http://mirrordirector.raspbian.org wheezy/rpi armhf Packages [592 B]
Ign http://mirrordirector.raspbian.org wheezy/contrib Translation-en_GB
Ign http://mirrordirector.raspbian.org wheezy/contrib Translation-en
Ign http://mirrordirector.raspbian.org wheezy/main Translation-en_GB
Ign http://mirrordirector.raspbian.org wheezy/main Translation-en
Ign http://mirrordirector.raspbian.org wheezy/non-free Translation-en_GB
Ign http://mirrordirector.raspbian.org wheezy/non-free Translation-en
Ign http://mirrordirector.raspbian.org wheezy/rpi Translation-en_GB
Ign http://mirrordirector.raspbian.org wheezy/rpi Translation-en
Fetched 7,144 kB in 1min 4s (111 kB/s)
Reading package lists... Done
root@orangepi:~#
root@orangepi:/etc/apt# apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages have been kept back:
  avrdude fake-hwclock libfm-data libfreetype6 libfreetype6-dev libgail-3-0
  libgcc1 libgfortran3 libgomp1 libgtk-3-0 libgtk-3-bin libgtk-3-common
  libjavascriptcoregtk-3.0-0 libpango1.0-0 libstdc++6 libwebkitgtk-3.0-0
  lxinput lxpanel omxplayer pcmanfm wolfram-engine zenity zenity-common
The following packages will be upgraded:
  firmware-realtek ghostscript libexpat1 libexpat1-dev libgs9 libgs9-common
  libicu48 libraspberrypi-bin libraspberrypi-dev libraspberrypi-doc
  libraspberrypi0 raspberrypi-bootloader sonic-pi
13 upgraded, 0 newly installed, 0 to remove and 23 not upgraded.
Need to get 115 MB of archives.
After this operation, 7,413 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
<略>

Orange pi 2でlshwを取得

Orange pi2でlshwを実行した結果をメモとして保存。

root@orangepi:~# lshw
orangepi
    description: Computer
    width: 32 bits
  *-core
       description: Motherboard
       physical id: 0
     *-memory
          description: System memory
          physical id: 0
          size: 1003MiB
     *-cpu
          physical id: 1
          bus info: cpu@0
          size: 1200MHz
          capacity: 1200MHz
          capabilities: cpufreq
  *-network:0
       description: Wireless interface
       physical id: 1
       logical name: wlan1
       serial: 56:e4:bd:yy:yy:yy
       capabilities: ethernet physical wireless
       configuration: broadcast=yes driver=rtl8189es driverversion=3.4.39 firmware=N/A link=no multicast=yes wireless=IEEE 802.11abgn
  *-network:1
       description: Wireless interface
       physical id: 2
       logical name: wlan0
       serial: 54:e4:bd:yy:yy:yy
       capabilities: ethernet physical wireless
       configuration: broadcast=yes driver=rtl8189es driverversion=3.4.39 firmware=N/A link=no multicast=yes wireless=IEEE 802.11abgn
  *-network:2
       description: Ethernet interface
       physical id: 3
       logical name: eth0
       serial: 0e:ef:0f:xx:xx:xx
       size: 100Mbit/s
       capacity: 100Mbit/s
       capabilities: ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=sunxi_geth driverversion=SUNXI Gbgit driver V1.1 duplex=full ip=192.168.1.xx link=yes multicast=yes port=MII speed=100Mbit/s
root@orangepi:~# lshw -businfo
Bus info  Device  Class      Description
========================================
                  system     Computer
                  bus        Motherboard
                  memory     1003MiB System memory
cpu@0             processor
          wlan1   network    Wireless interface
          wlan0   network    Wireless interface
          eth0    network    Ethernet interface
root@orangepi:~#

おや?CPUコアがcpu@1だけなのか?

root@orangepi:~# cat /proc/cpu
cat: /proc/cpu: Is a directory
root@orangepi:~# cat /proc/cpuinfo
Processor       : ARMv7 Processor rev 5 (v7l)
processor       : 0
BogoMIPS        : 4800.00

processor       : 1
BogoMIPS        : 4800.00

processor       : 2
BogoMIPS        : 4800.00

Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

Hardware        : sun8i
Revision        : 0000
Serial          : 0400519006183c1806cc
root@orangepi:~# cat /proc/meminfo
MemTotal:        1027348 kB
MemFree:          736256 kB
Buffers:           29840 kB
Cached:           203032 kB
SwapCached:            0 kB
Active:           144444 kB
Inactive:         107744 kB
Active(anon):      19388 kB
Inactive(anon):      160 kB
Active(file):     125056 kB
Inactive(file):   107584 kB
Unevictable:           0 kB
Mlocked:               0 kB
HighTotal:        270336 kB
HighFree:          68636 kB
LowTotal:         757012 kB
LowFree:          667620 kB
SwapTotal:        102396 kB
SwapFree:         102396 kB
Dirty:                40 kB
Writeback:             0 kB
AnonPages:         19312 kB
Mapped:            16156 kB
Shmem:               236 kB
Slab:              18324 kB
SReclaimable:       9716 kB
SUnreclaim:         8608 kB
KernelStack:         792 kB
PageTables:          644 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      616068 kB
Committed_AS:      97612 kB
VmallocTotal:     245760 kB
VmallocUsed:       29976 kB
VmallocChunk:     212864 kB
root@orangepi:~#

こっちだとProcessor0,1,2と、3つ見える。

見え方について微妙な感じなのか?