Upload
shimadah
View
1.310
Download
0
Embed Size (px)
Citation preview
現状
● 下回りがきちんと動くOS、ディストリビューションがほとんど無いため、デスクトップ環境やアプリケーションの整備が Android に比べ遅れている。
● それに伴いユーザも少ない。
→ まだ悪循環が止まっていない。
もがきはじめてだいたい1年...
● だいぶ市場の状況が把握できてきました
(Kapperさん、ほたさん等等、ほんまありがとうございます)
● ここん的に取り組むと楽しそうな領域は、安価でhackableな中古タブレット、あといわゆる中華タブレットがよいということが判明しました
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 を動かそうという意欲が高い。
事の発端:遅いAndroid Tablet
● 帰省中、お蔵入りしていた Android Tablet を発見– だいぶ前に、妹(スティーブ・ココンの作者↓)が購入し
た教材に付いてきたらしい– しかし、動作が大変モッサリとしていたので余り使わな
かったらしい
● 正常に動いているため、貰って何かに遊べるか調べることにした
Androidは大変モッサリなので
● なにか適当なLinux環境を作って動かせば、割と使えるようになるんじゃないか
● Allwinnerはそんなに難しくない、みたいな話を以前聞いたことがある
● ちゅうわけで調べてみたのが事の発端
調べてみると
● 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・カメラ周りのチップは差異
が多いとされている
どうやってディストリを作るか?
● OpenEmbedded + meta-sunxi の組み合わせ
(meta-sunxi も Linux-sunxi コミュニティでメンテナンスされている。)
https://github.com/linux-sunxi/meta-sunxi
● (ここんとしては)慣れている OpenEmbedded でさくっとできればいいよね
その後わかったこと
● 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
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〜ぐらい(中古)
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