Allwinner H5搭載のOrangePi Zero Plus2とH3搭載のNanoPi M1 Plus


Orange Pi提供のH5 SDK(https://github.com/orangepi-xunlong/OrangePi_H5SDK)をコンパイルしてみたら、ボードの選択肢に奇妙なものが・・・

内部用という「OrangePi Prima」はいいとして、もう1つの「Orange Pi Zero Plus」
Zero系ってことはHDMIなしなのかな?とfexファイルを見てみると・・・
・100Mb NIC
・WiFiとBluetoothがオンボード
・HDMI関連については記述が特に分からない

まぁ、予想通りな感じのもの。

そして、FriendlyARM提供のH3 SDK(https://github.com/friendlyarm/h3_lichee)の更新ログを見ると、2016/10/21に「board: add a new board nanopi-m1-plus」というものが・・・
M1とM1 Plusのfexファイルを比較すると・・・
・WiFiとBluetoothがオンボード
・1000Mb NIC搭載
・SATAコネクタっぽいものあり?

Orange Pi Plusみたいな立場のボードですね。


Orange Pi PC2とOrange Pi Zero Plus2のfexファイル比較

osakanataro@ubuntu16:/work/h5/OrangePi_H5SDK$ diff -u ./external/sys_config/OrangePiH5_PC2_sys_config.fex ./external/sys_config/OrangePiH5_Zero_Plus2_sys_config.fex
--- ./external/sys_config/OrangePiH5_PC2_sys_config.fex 2016-12-20 10:53:50.176568908 +0900
+++ ./external/sys_config/OrangePiH5_Zero_Plus2_sys_config.fex  2016-12-20 10:55:56.841989102 +0900
@@ -3,7 +3,7 @@
 ; ?明: 脚本中的字符串区分大小写,用?可以修改"="后面的数?,但是不要修改前面的字符串
 ; 描述gpio的形式:Port:端口+?内序号<功能分配><内部?阻状?><??能力><?出?平状?>
 ;---------------------------------------------------------------------------------------------------------
-; Platform: OrangePi PC2
+; Platform: OrangePi Zero Plus2

 [product]
 version = "100"
@@ -197,7 +197,7 @@
 ;   rx-delay    --  receive clock delay:  0~31                                 ;
 ;------------------------------------------------------------------------------;
 [gmac0]
-gmac0_used         = 1
+gmac0_used         = 0
 phy-mode           = "rgmii"
 ;gmac_rxd3          = port:PD00<2><default><3><default>
 ;gmac_rxd2          = port:PD01<2><default><3><default>
@@ -836,7 +836,7 @@


 [sdc1]
-sdc1_used          = 0
+sdc1_used          = 1
 bus-width      = 4
 sdc1_clk           = port:PG00<2><1><3><default>
 sdc1_cmd           = port:PG01<2><1><3><default>
@@ -929,10 +929,10 @@
 gpio_used              = 1
 gpio_num               = 2
 gpio_pin_1             =  port:PL10<1><default><default><0>
-gpio_pin_2             =  port:PA20<1><default><default><1>
+gpio_pin_2             =  port:PL06<1><default><default><1>
 ;gpio_pin_3            =  port:PA13<1><default><default><1>
 normal_led             = "gpio_pin_1"
-standby_led            = "gpio_pin_2"
+;standby_led           = "gpio_pin_2"
 ;network_led           = "gpio_pin_3"

 ;--------------------------------
@@ -1049,15 +1049,15 @@
 ;wlan_hostwake:     wlan to wake-up host
 ;--------------------------------------------------------------------------------
 [wlan]
-wlan_used           = 0
+wlan_used           = 1
 wlan_busnum         = 1
 wlan_usbnum         = 3
 clocks             = "&clk_losc_out"
 wlan_power          = "vcc-wifi"
 wlan_io_regulator   = "vcc-wifi-io"
 ;wlan_en             = port:PC14<1><default><default><0>
-wlan_regon          = port:PC14<1><default><default><0>
-wlan_hostwake       = port:PL07<0><default><default><0>
+wlan_regon          = port:PA09<1><default><default><0>
+wlan_hostwake       = port:PL07<6><default><default><0>

 ;--------------------------------------------------------------------------------
 ;bluetooth configuration
@@ -1068,11 +1068,11 @@
 ;bt_rst_n:          power up/down internal regulators used by BT section
 ;--------------------------------------------------------------------------------
 [bt]
-bt_used             = 0
+bt_used             = 1
 ;clocks             = "&clk_losc_out"
 bt_power            = "vcc-wifi"
 bt_io_regulator     = "vcc-wifi-io"
-bt_rst_n            = port:PC16<1><default><default><0>
+bt_rst_n            = port:PA10<1><default><default><0>

 ;--------------------------------------------------------------------------------
 ;bluetooth lpm configuration
@@ -1082,10 +1082,10 @@
 ;bt_hostwake:       bt device wake-up host
 ;--------------------------------------------------------------------------------
 [btlpm]
-btlpm_used          = 0
+btlpm_used          = 1
 uart_index          = 1
-bt_wake             = port:PC15<1><default><default><1>
-bt_hostwake         = port:PL06<6><default><default><0>
+bt_wake             = port:PA20<1><default><default><1>
+bt_hostwake         = port:PL02<6><default><default><0>

 ;--------------------------------------------------------------------------------
 ;3G configuration
osakanataro@ubuntu16:/work/h5/OrangePi_H5SDK$

NanoPi M1とNanoPi M1 Plusのfexファイル比較

osakanataro@ubuntu16:/work/nanopi/h3_lichee$ ^diff^diff -u
diff -u ./tools/pack/chips/sun8iw7p1/configs/nanopi-h3/boards/sys_config_nanopi_m1.fex ./tools/pack/chips/sun8iw7p1/configs/nanopi-h3/boards/sys_config_nanopi_m1_plus.fex
--- ./tools/pack/chips/sun8iw7p1/configs/nanopi-h3/boards/sys_config_nanopi_m1.fex      2016-12-20 20:27:23.160150836 +0900
+++ ./tools/pack/chips/sun8iw7p1/configs/nanopi-h3/boards/sys_config_nanopi_m1_plus.fex 2016-12-20 20:27:23.180150100 +0900
@@ -22,7 +22,7 @@
 logical_start = 40960
 sprite_work_delay = 500
 sprite_err_delay = 200
-sprite_gpio0 = port:PA15<1><default><default><default>
+;sprite_gpio0 = port:PA15<1><default><default><default>
 next_work = 3

 [box_start_os]
@@ -40,7 +40,7 @@
 gpio1 = port:PG11<1><default><default><1>

 [recovery_para]
-used = 1
+used = 0
 mode = 2
 recovery_key = port:PL04<0><default><default><default>

@@ -176,6 +176,8 @@
 uart_type = 4
 uart_tx = port:PA00<2><1><default><default>
 uart_rx = port:PA01<2><1><default><default>
+uart_rts = port:PA02<2><1><default><default>
+uart_cts = port:PA03<2><1><default><default>

 [uart3]
 uart_used = 1
@@ -183,6 +185,8 @@
 uart_type = 4
 uart_tx = port:PA13<3><1><default><default>
 uart_rx = port:PA14<3><1><default><default>
+uart_rts = port:PA15<1><2><default><default>
+uart_cts = port:PA16<3><2><default><default>

 [spi0]
 spi_used = 1
@@ -339,17 +343,35 @@
 tv_dac_src0 = 0

 [pwm0_para]
-pwm_used = 1
+pwm_used = 0
 pwm_positive = port:PA05<3><0><default><default>
-
-[pwm1_para]
-pwm_used = 1
-pwm_positive = port:PA06<3><0><default><default>
+;       If set gamc_phy to use = 2

 [gmac0]
-gmac_used = 2
+gmac_used = 1
+gmac_rxd3          = port:PD00<2><default><3><default>
+gmac_rxd2          = port:PD01<2><default><3><default>
+gmac_rxd1          = port:PD02<2><default><3><default>
+gmac_rxd0          = port:PD03<2><default><3><default>
+gmac_rxclk         = port:PD04<2><default><3><default>
+gmac_rxdv          = port:PD05<2><default><3><default>
+gmac_rxerr         = port:PD06<2><default><3><default>
+gmac_txd3          = port:PD07<2><default><3><default>
+gmac_txd2          = port:PD08<2><default><3><default>
+gmac_txd1          = port:PD09<2><default><3><default>
+gmac_txd0          = port:PD10<2><default><3><default>
+gmac_crs           = port:PD11<2><default><3><default>
+gmac_txclk         = port:PD12<2><default><3><default>
+gmac_txen          = port:PD13<2><default><3><default>
+gmac_txerr         = port:PD14<2><default><3><default>
+gmac_col           = port:PD15<2><default><3><default>
+gmac_mdc           = port:PD16<2><default><3><default>
+gmac_mdio          = port:PD17<2><default><3><default>
 gmac_power1 =

+[gmac_phy_power]
+gmac_phy_power_en   = port:PD06<1><default><default><0>
+
 [csi0]
 vip_used                 = 1
 vip_mode                 = 0
@@ -414,7 +436,7 @@

 [mmc0_para]
 sdc_used = 1
-sdc_detmode = 3
+sdc_detmode = 1
 sdc_buswidth = 4
 sdc_clk = port:PF02<2><1><2><default>
 sdc_cmd = port:PF03<2><1><2><default>
@@ -430,7 +452,7 @@
 sdc_power_supply = "none"

 [mmc1_para]
-sdc_used = 0
+sdc_used = 1
 sdc_detmode = 4
 sdc_buswidth = 4
 sdc_clk = port:PG00<2><1><3><default>
@@ -449,7 +471,7 @@
 sdc_ddrmode = 1

 [mmc2_para]
-sdc_used = 0
+sdc_used = 1
 sdc_detmode = 3
 sdc_buswidth = 8
 sdc_clk = port:PC05<3><1><2><default>
@@ -549,7 +571,7 @@
 lpo_use_apclk =

 [wifi_para]
-wifi_used = 0
+wifi_used = 1
 wifi_sdc_id = 1
 wifi_usbc_id = 5
 wifi_usbc_type = 1
@@ -558,11 +580,12 @@
 wl_host_wake_invert = 0

 [bt_para]
-bt_used = 0
-bt_uart_id = 1
-bt_rst_n =
-bt_wake =
-bt_host_wake =
+bt_used = 1
+bt_uart_id = 3
+bt_uart_baud = 115200
+bt_rst_n = port:PG13<1><default><default><0>
+bt_wake = port:PA08<1><default><default><0>
+bt_host_wake = port:PA07<0><default><default><0>
 bt_host_wake_invert = 0

 [pcm0]
osakanataro@ubuntu16:/work/nanopi/h3_lichee$

RetroPie以外のレトロゲーム向けディストリビューションLakkaとlibRetro


ラズベリーパイを使って各種ゲーム機やパソコンをエミュレートして遊びやすくしたディストリビューションとして「Retro Pie」というのがある。

他に似たようなのがないか探していたら「Lakka」というものを発見。
ちょうど、「Orange Pi PC向けのサポートを開始したばかり」のようです。

RetroPieのサポートリスト」と「Lakkaのサポートリスト」を見比べても、基本的に大差はないようです。

LibRetro」という古いアーキテクチャ環境ソフトウェアRetroArchをWindows,Linux,MacOSX向けに提供しているところが提供しているディストリビューションが「Lakka」という位置づけのようです。
なので、「Getting Started with RetroArch」を見ると、Ubuntu Linuxの追加レポジトリとして登録するための手順も書いてあったりします。

で、Lakkaのマニュアルで特に気になったのは「NetPlay
1プレイヤー用のLakka上でスーファミのマリオカートを動かし、2プレイヤー用のLakkaから1プレイヤー用のLakkaにネットワーク接続することで、対戦が可能になる、というもの

さすがに同一スイッチ内、ということですが、ちょっと面白そうな感じがします・・・

RetroEngine Sigmaの中身はおそらくOrange Pi Lite


おそらくNintendoのファミコンクラシック/NES Classicの成功を受けて、Indiegogoで始まったクラウドファンディングプロジェクト「RetroEngine Sigma – Mini Console & Media Player」というものがある。

各種エミュレータを搭載してるだけのようなのだが、コネクタ配置に見覚えが・・・

うちにあるOrange Pi Oneを見てみる・・・

Indiegogoページにあるコネクタ周りの配置・・・

横のUSBコネクタ周りにはRJ45がなく、ちょっと間隔があいてUSBコネクタが2つということは・・・

Orange Pi Lite!!!

上に乗せるOSについては、ラズパイ向けに出ている「RetroPi」をarmbianベースに変更し、Orange Piに移植した「RetrOrangePi」というのがあるので、もしかしたら、もしかするかもしれません
ちなみにRetroPiで動くエミュレータは「Systems in RetroPie」にあるように、多岐に渡っており、RetroEngine Sigmaがうたっている機種が含まれています。

というわけで、このプロジェクト、Aliexpressで送料込み$15.11で販売しているものに、それっぽいケースをつけて、RetroPi(とそれで使っているエミュレータ)を載っけて最低価格$49+送料で販売するってことですかね・・・

権利関係、ほんとに大丈夫なのかな???

マインクラフトをOrange PiのLinuxで動かすことができるか?


結論から述べると、2016/12/02現在、Orange PiのLinux系では動きません。
Allwinner H3搭載のOrange Pi PC、および、Allwinner H5搭載のOrange Pi PC2共に動きません。

マインクラフトをラズベリーパイで動かす、という話がある。
いまはRaspbianに標準でマインクラフトが入っているので簡単、と書いてある。

このRaspbianにインストールされているマインクラフトは「Minecraft Pi Edition」というものであり、通常のパソコン版とは異なるものとなっている。
タブレットなど用のMinecraft Pocket Editionをベースに開発されているが、3年以上アップデートされていないため、機能差が結構でている。

このMinecraft Pi Editionであるが、公式ページからminecraft-pi-0.1.1.tar.gzをダウンロードすることができる。
バイナリを調べるとARM用で、一見するとOrange Piでも動作するように見えます。

しかし、実行してみるとBroadcomのGPUデバイスにアクセスしようとし、起動に失敗します。
BroadcomのSoCを使用しているラズベリーパイ(Raspberry Pi/Pi2/Pi3)以外では動作しないようです。

さて・・・パソコン版のMinecraftについて、よく見てみると、Windows用、MacOSX用とLinux用と3種類あります。
そしてLinux用は、Javaのパッケージでの提供となっています。
Orange PiにもJavaはインストールできるので、実行できそうな感じに見えるでしょう。

実際、アップデートの実行と、起動の途中までは成功します。
しかし、グラフィック操作関連のライブラリ読み込み時にx86用のバイナリを読み込んでしまい、起動に失敗します。

過去のMinecraftでは、ファイルを強制的に置き換えることで起動に成功していたようなのですが、最近のバージョンでは使えないようです。
jarファイル置き換え&チェックサムファイル置き換えを行っても、起動時に元のファイルをダウンロードしなおしてしまいます。

うまいことやる方法はないものでしょうかねぇ・・・

なお・・・Orange PiのOSをAndroidに書き換えて、Android版のMinecraft Pocket Editionを使う、という手はあります。

Allwinner H3搭載のOrange Pi向けのLinuxのお薦め(2016/12/01版)


Allwinner H3/H2+搭載のOrange Piシリーズとして、以下のものがリリースされています。
・Orange Pi 2 / Orange Pi mini 2
・Orange Pi Plus / Orange Pi Plus 2
・Orange Pi PC
・Orange Pi PC Plus
・Orange Pi Plus 2E
・Orange Pi One
・Orange Pi Lite
・Orange Pi Zero

「Orange Pi 2」と「Orange Pi mini 2」は無線LANの有無だけなので同一扱いです
「Orange Pi Plus」と「Orange Pi Plus 2」はメモリ容量の違いのみで同一扱いです
「Orange Pi」と「Orange Pi Mini」はAllwinner A20搭載の旧機種なので当blogでの取り扱い対象外です
Allwinner H5搭載の「Orange Pi PC2」については別記事を作成する予定です。

Orange Pi公式として、いくつかOSがリリースされていますが、全然更新していってくれません。
最初にリリースしたら、それっきりで放置されています。
基本的にはDebian/Ubuntuなどのarmhf向けの公式リリースを利用しているので、いろんなパッケージのアップデートに関しては問題ありませんが、Linux Kernelなどに対する更新が提供されていません。

これをどうにかするには、現状だとOrange Piが提供していない、それ以外のディストリビューションを選択する必要があります。

・お薦め度 No1:armbian
Debian/Ubuntuの公式リリースのバイナリパッケージを利用しつつ、Linux kernelなどのカスタマイズが必要な部分については、自分たちのレポジトリをきちんと用意し、継続してアップデートする環境を整えているディストリビューションです。
長期で使いたい場合は、最有力となるものです。

armbianのAllwinner H3向けは各機種ともLinux kernel 3.4.113が基本ですが、Linux kernel 4.9のものが開発中です。
現状、Orange pi PC向けとして開発中ですが、HDMI出力はサポートしていない状態です。
今後に期待です。

開発ツリー:https://github.com/igorpecovnik/lib

・メディアプレーヤ向けのOpenELEC for Orange pi
TVにOrange Piを接続し、ムービーとかを再生するためのメディアプレイヤーとして使う場合に適しているディストリビューションの「OpenELEC」をOrange Pi向けに移植したものです。
Orange Piの公式フォーラムで配布しており、イメージは「Latest prebuilt images」にてダウンロードできます。
HDMI接続したテレビのリモコンを使っての操作が可能な設定になっているはずなのですが、どうやらTV側の機種を選ぶようで、うまく動かないことが多いようです。
うまく動かない場合は、テレビリモコンでの操作は諦めましょう。

ただ、動画再生時、CPUからの発熱が酷いのでヒートシンクやCPUファンなどの冷却機能を用意する必要があります。
また、ラズパイ向けのOpenELECと比較すると微妙な点が多いのでどれくらい実用化というと・・・

開発ツリー:https://github.com/jernejsk/OpenELEC-OPi2/

DietPi
armbianの成果物を利用しつつ、インストールサイズを最小化したコンパクトなラズベリーパイ向けディストリビューションであるDietPiがAllwinner H3機種向けにも提供されています。
Orange Pi系では、Orange Pi PCとOrange Pi Oneの2機種に提供されています。

このディストリビューションもこまめにアップデートされています。

開発ツリー:https://github.com/Fourdee/DietPi