43
Allwinnerタブレットの OSを作ってみる(中編) SHIMADA Hirofumi, @shimadah

AllwinnerタブレットのOSを作ってみる(中編)

Embed Size (px)

Citation preview

AllwinnerタブレットのOSを作ってみる(中編)

SHIMADA Hirofumi,@shimadah

opencoconとは

旧型PCをシンクライアント

として再利用する

Linuxディストリビューションhttp://opencocon.org/

実際は古くて珍しいマシン大好き

プロジェクト開始6年、時代は...

もしかして...

10年後はタブレットひとつで

FLOSSに飛び込んでくる人が来る?

タブレットがメインの世界にLinux ディストリは生きのれるのだろうか?

現状

● 下回りがきちんと動くOS、ディストリビューションがほとんど無いため、デスクトップ環境やアプリケーションの整備が Android に比べ遅れている。

● それに伴いユーザも少ない。

→ まだ悪循環が止まっていない。

代表的な旧型タブレット(再利用できそうなもの)

Android Tablet Windows Tablet

もがきはじめてだいたい1年...

● だいぶ市場の状況が把握できてきました

(Kapperさん、ほたさん等等、ほんまありがとうございます)

● ここん的に取り組むと楽しそうな領域は、安価でhackableな中古タブレット、あといわゆる中華タブレットがよいということが判明しました

中華ARM AndroidタブレットのSoCは...

Allwinner

● 安価なタブレット・ボードコンピュータ・TVスティック・STBへの搭載がとにかく多い

● 2012年〜2013年は、世界で最も多くのAndroidタブ用SoCを供給していた。そのため今でも入手しやすい

● 日本では、(確認している限り)以下のメーカーのタブレットに搭載

KEIAN, MSI, RWC, AKART, Mouse Computer, Hyundai, ...● ボードコンピュータ

Cubieboard, pcDuino, MarsBoard, OLinuXino, Foxconn Super Pi, Orange Pi, Banana Pi, Hummingbird, Pine64, PocketCHIP, ...

● 最もよく見るのは A10, A13 であるが、最近はデュアルコア(A20)、クアッドコア(A31s等)、64bit ARMプロセッサ(A64)もある

● Kernel 等のサポートは後述

Rockchip

● Allwinnerに比べマイナーであるが、パフォーマンスがよいらしく、所々に大手メーカーの採用例がある。

● タブレット

HP Slate 7, Huawei MediaPad Youth 7, TOSHIBA REGZA Tablet AT374, ...

● ボードコンピュータ : Firefly, ...● Chromebook : Asus C201● Kernel や u-boot 等は、一部の SoC 向けのコードが Mainline

に入って いる。基本的にボードコンピュータ, 評価ボード, Chromebook 向けにメンテナンスされているようだ

Actions

https://imgtec.com/blog/new-atm7021-atm7039-owl-chips-actions-semiconductor-stand-world-android-tablets/

● 若干マイナー。タブレットというよりは、デジタルメディアプレーヤー向けチップが強い。

● 初期のSoCはARMではなくMIPSを採用していた

● これを搭載したタブレットが稀にある● ボードコンピュータ

96Board, ActDuino, Guitar, RoseapplePi, Sparky

● march-owl : まだ Mainline Kernel 等には無いようだ。Source code が少々探しにくい。

今年のザ・旧型コンピュータは

linux-sunxi コミュニティ

● 開発コミュニティが活発であり、基本的な部分は既にコミュニティ側のコードだけで動作する

● Allwinner マシン向けの Kernel, u-boot 等のメンテナンスと Upstream への反映を行っている

● Allwinner マシンのデータベース(Wiki)を持ち、Hack の仕方などをまとめているhttp://linux-sunxi.org/Identification_guide

なぜ Allwinner はハックされるのか?

● Bootloader がロックされていない : 対応するSDカードを刺して電源を入れるだけで俺Linuxが動く

● ベンダーリポジトリはあってないようなものである● Allwinnerやタブレットメーカーは、GPL違反を繰り返している

http://linux-sunxi.org/GPL_Violations● ベンダーのKernelにはBackdoorが入っているのではないか?という話がある

"Allwinner has also been accused of including a backdoor in its published version of the Linux kernel."

https://en.wikipedia.org/wiki/Allwinner_Technology● 多くのタブレットは、ADB Shellで入るとroot権限で使える

(そうでない端末もある)

つまり

● Allwinner端末は多いけど、プリインストールしている Andorid は信用できない! 使いたくない!!

● ベンダーがコミュニティに好意的ではないため、コミュニティが使うコードの拠り所が Linux / u-boot のMainline ぐらいしかない

● コミュニティが自ら全てをコントロールできる Linux を動かそうという意欲が高い。

Allwinner タブ用のディストリを作ろうPart1 : Q8 タブレット

事の発端:遅いAndroid Tablet

● 帰省中、お蔵入りしていた Android Tablet を発見– だいぶ前に、妹(スティーブ・ココンの作者↓)が購入し

た教材に付いてきたらしい– しかし、動作が大変モッサリとしていたので余り使わな

かったらしい

● 正常に動いているため、貰って何かに遊べるか調べることにした

Androidは大変モッサリなので

● なにか適当なLinux環境を作って動かせば、割と使えるようになるんじゃないか

● Allwinnerはそんなに難しくない、みたいな話を以前聞いたことがある

● ちゅうわけで調べてみたのが事の発端

調査開始

● Android 4.1

● 機種名しかわからず、手がかりがない

そういうときはバラしましょう

ヒントは?

わかったこと

● Allwinner A13● 基盤にある文字:ET_Q8_V1.2

→この情報を基に、linux-sunxi サイト内を探す

調べてみると

● Q8 というフォームファクタのタブレットである

“ The 7" tablet format is a very popular case style which is/was used for the cheapest tablets from 2012 through 2014. “http://linux-sunxi.org/Format_Q8

● この外観であれば、LCDの解像度やUART等の基本的なスペックはほぼ共通であると考えてよい

● ロジックボードのメーカーが多いため細かい差異があるらしく、コミュニティでもその全容を把握できていない– 案の定、 ET_Q8_V1.2 という名前のタブレットが無かったものの、近そうな

タブレットならあった– 4台入手したものの、全て異なるロジックボードであった

共通スペック

● Allwwinner A13 (たまにA23)● Memory : 512MB● NAND : 4GB前後

● LCD : 800x480● タッチパネル・無線LAN・カメラ周りのチップは差異

が多いとされている

なお、無線LANは100%...

どうやってディストリを作るか?

● OpenEmbedded + meta-sunxi の組み合わせ

(meta-sunxi も Linux-sunxi コミュニティでメンテナンスされている。)

https://github.com/linux-sunxi/meta-sunxi

● (ここんとしては)慣れている OpenEmbedded でさくっとできればいいよね

中略

AllwinnerタブレットのOSを作ってみる (途中版)http://www.slideshare.net/shimadah/allwinneros

その後わかったこと

● Meta-sunxi を有効にして image を生成すると、

opencocon-canvas-v10-q8.rootfs.sunxi-sdimg

のような感じに、そのままSDカードにddして起動できるDisk Imageができる。 (お手軽!)

● Mainline Kernel に特に patch を当てる必要がない。

ここまでは動いた

ここまでの課題

● U-boot の段階では、OTGケーブルを通じてキーボードが使えるが、Linux Kernel に入ると使えなくなる。

● 4台中3台にて、Kernel が走りだして 0.5 秒後に液晶の電源が切れてしまう。 (←まだ調査中)

● タッチスクリーンのドライバをまだ入れていない– I2C等である程度は自動検出できるらしい…?

● UARTが見つからない– まだ修行が足りないようやな...orz

Kernel に入ってからUSBが使えない

● こんなエラーが dmesg に見える

sun4i-usb-phy 1c13400.phy: could not find pctldev for node /soc@01c00000/pinctrl@01c20800/usb0_id_detect_pin@0, deferring probe

● MLを調べてみると、どうもDevice TreeでOTGを有効にしてると起こる場合があるようだ。 USBをHostのみにすると、使えるようになるという記述があった。

[PATCH] musb: sunxi: Ignore VBus errors in host-only modehttps://groups.google.com/forum/#!msg/linux-sunxi/uulK5lf7XrU/QUMtNbVpAQAJ

やっとPCぽくなった Q8 タブレット

Allwinner タブ用のディストリを作ろうPart2 : MSI Primo 81

https://www.amazon.co.jp/MSI-Primo81-7-85%E3%82%A4%E3%83%B3%E3%83%81%E3%82%BF%E3%83%96%E3%83%AC%E3%83%83%E3%83%88-Android4-2-N821/dp/B00FIYSTUQ

Primo81 : スペック

● 2013年製

● Allwinner A31s : 4core● Memory 1GB● NAND 16GB● PowerVR● IPS液晶 768x1024, Mini HDMI アダプタ

● 入手価格 \9000〜ぐらい(中古)

なお、無線LANはやっぱり

Sunxi の情報によると

● Mainline U-Boot, Kernel のみで動く– Q8 とは異なり、それ用の Device Tree が存在する

● カメラとサウンド以外はすべて動く(らしい)● A31s は PowerVR なのでGPUの性能が発揮できないものの、

Framebuffer は動く

● LCDがMIPI DSI 接続らしい:まだKernelは正確に対応していないが、u-boot で初期化するため一応映る– このため、起動時にLCD, HDMIのいずれかに映り、その後は設定で変

えることができない

http://linux-sunxi.org/MSI_Primo81

Primo81でLinuxを動かす

● Q8 と同じ要領でディスクイメージを作成した(Linux 4.4)が、これも起動途中にディスプレイが消えてしまった

● Linux 4.7 に変えたところ、正常に動くようになった

● タッチスクリーンのドライバ(goodix)も Mainline にあるので、一連のテストはだいぶ手軽にできることが判明した

まだ対応していないtabletを対応させるためには?

● Step 1: 何ができるか探そう

既に対応している機種であるか?、など

● Step 2: Wiki ページを作ろう

● Step 3: ストックしてあるOSの情報の重要な情報を検索しよう

 この場合は既存のFirmwareを指しているものと思われる。

 また、ADB Console から script.bin (現在の Device Tree に相当)を取得する点も含まれる。

● Step 4: シリアルコンソールを探そう

● Step 5: u-bootで対応させよう

● Step 6: sunxi-boards に(script.binを変換して)アップロードしよう

● Step 7: Manual Build (して Linux を動かそう)

http://linux-sunxi.org/New_Device_howto

http://linux-sunxi.org/Forfun_Q88DB

下は固まってきたので上周りはどうする?

● マルチタッチの認識テストをしたい● Qt or GTK+ で認識するか確認したい● これでどんなのが楽しく動かせるか調べたい

→ まだまだ課題山積です

まとめ

● Allwinner タブレットは、基本を把握さえすれば比較的とっつきやすい。コミュニティのサポートもある。

● 旧型タブレット向けLinuxディストリを作る素地を作った

● やはり世界は蟹 (Realtek)に支配されていた

● タブレットで遊ぼうぜ!!