2016年1月17日日曜日

OrangePI PC 日本語デスクトップ構築

 いろんなパターンでインストール/設定してみましたが、日本語表示、入力できる形のデスクトップ環境がなかなかうまく構築できませんでした。そこで最小環境でインストールして、順次セットアップして方法を試したところ、何とか、OragePI PC 上で日本語表示/入力可能なデスクトップ環境を作ることができました。作業中には、ここに記載した以外にもいろいろ試行錯誤しているので、もしかしたら、この手順だけでは不十分なのかもしれません。近いうちに再現実験もしたいと思います。

用意するもの:

 OragePI PC、モニタ、キーボード、マウス
(当方環境では、キーボードが認識されないケースがありました。電源供給可能なHUBを使って接続したら解消しました)

32GBトランセンドのマイクロSDカード(クラス10)

Windows7 64bitがインストールされているPC、マイクロSDカードが読み書きできるもの。


Windows側で、必要になるソフト:
lhaplusなど、tar.gz や xz が解凍できるソフト
Win32 Disk Imager (SDカードカードにイメージをリストアするため)

まずは、windows機で作業部分

(1)loborisさん公開のイメージから必要なファイルをダウンロードする。
loborisさんが公開されているイメージ(Google Drive)

この中から、
Ubuntu_wily_mini.img.xz
scriptbin_kernel.tar.gz

の2本をダウンロードします。

(2)xz,gz の解凍
Ubuntu_wily_mini.img.xzを解凍して、Ubnuntu_wily_mini.imgを得ます。
ついでに、scriptbin_kernel.tar.gzも解凍しておきましょう。

(3)Win32 Disk Imager を使って、SDカードに、Ubuntu_wily_mini.img を書き込みます。

(4)SDカードを一度はずし、再認識させます。

(5)SDカード内で、Windowsから見えているファイルを全て削除します。
せっかく書いたのにと思われるかもしれませんが、Windowsから見えているのは、Ubuntu_wily_mini.img内のごく一部です。起動の最初のほうに必要なファイルだけが、Windows側から見える形で保存されているので、これを消します。

(6)スクリプト&カーネルのコピー
scriptbin_kernel.tar.gz を解凍して、この中から、

script.bin.OPI-PC_1080p60_hdmiをSDカードにコピー
このファイルを、script.binにリネーム

uImage_OPI-2をSDカードにコピー
このファイルをuImage にリネームします。

OrangePI PCに接続するモニタが1920ドットx1080ドットでない場合、720p60_hdmiや、480p60_hdmiを試してみてください。うちの環境は、1920x1080ドットのモニタでしたので、このファイルを使っています。

SDカードカードには、windowsから見ると、

script.bin
uImage

の2つのファイルだけになります。ここまでで、準備段階は完了です。SDカードカードを安全に取り外して、OrangePI PCにセットし、電源を投入します。

(7)ファイルシステムのリサイズ
起動するとキャラクタベースの画面で、loginできるようになります。ユーザー名orangepi パスワード orangepi でログインします。sudo が面倒なら、 rootでログインしてもいいかもしれません。
まず、さきほどコピーしてwindowsからは見えなかったubuntu本体部分は、ファイルシステムのサイズがギリギリに作ってあり、SDカードを100%使わない状態になっているので、これを拡張して、32ギガバイトをフルに使える状態にします。

sudo fs_resize
英語キーボード認識になっていて、アンダーバーが打てない場合、フルキー側の「0(ゼロ)」の右隣、マイナスキーをシフトを押しながら押せば入力できるかとおもいます。
このあと、リブートが(多分)必要です。

(8)パッケージを最新状態に
これからいろいろインストールするためのパッケージ情報を最新状態にします。

sudo apt-get update
sudo apt-get upgrade

(9)時計を日本時刻に
まあ、あとでも構わないかもしれませんが、

cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime


(10)キーボードを日本語対応に、
dpkg-reconfigure keyboard-configuration

CUIでメニューがでますので、 Generic105(intl) => Japanese => Japanese => The default => No Composeを選択します。


(11)日本語版リミックスのリポジトリ追加
この作業必要だったのかはっきりしません。

sudo wget --no-check-certificate -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
sudo wget --no-check-certificate -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
sudo wget --no-check-certificate https://www.ubuntulinux.jp/sources.list.d/wily.list -O /etc/apt/sources.list.d/ubuntu-ja.list
sudo apt-get update

(12)デスクトップのインストール

sudo apt-get install ubuntu-desktop

完了するのに、1時間くらいかかります。気長に待ちましょう。

(13)スワップファイルの設定

mkdir /var/swap
dd if=/dev/zero of=/var/swap/swap0 bs=1M count=2048
chmod 600 /var/swap/swap0
mkswap /var/swap/swap0
swapon /var/swap/swap0

この状態でリブートすると、スワップデーモンがCPUを持って行きまくりになるようです。また、スワップファイルは作られていないようなので、これを設定します。

ここでリブート。次回はGUIになります。
うちの環境では、ログイン後、メニューバー、ウィンドウバー、ランチャの全てがない状態となりました。めげずに、画面上のどこかを右クリックし、端末を起動します。

(14)日本語環境のインストール
/usr/bin/ubuntu-contorl-cenetr

これで、Ubuntuの設定画面が開きますので、ここから、言語設定を開き、日本語を追加します。最初いひらいた場合は、インストールが完了してないとかいろいろ言われます。追加のインストールを完了してから、言語の追加で、[Japanse]を選びます。

端末をもう1つ開き、LXDEをインストールします。

sudo apt-get install lxde

(15)ログインしなおし
ログイン時に、ログイン名右上にあるアイコンをクリックして、デスクトップをUbuntu標準から、LXDE
に変更します。これで、うちの環境では、ウィンドウバーやメニューバー、なども表示され、標準的なLXDEになりました。

(16)日本語入力環境
最後に、日本語入力環境をインストールします。

sudo apt-get install ibus-mozc


ここまで、ざっと2時間ちょいくらいでいけると思います。




2016年1月15日金曜日

OrangePI PC,LED点滅にやっと成功

苦節2日(?)、やっと、OrangePIのLED点滅に成功しました。

きっと忘れるので、全手順を書いておきます。

POINT! loboris さんのイメージを使う。

まず、公式のイメージは忘れましょうw。loboris さんの解説を読みましょう。

Loboris さんの解説


私が行った手順:

1. Loboris さんが公開しているgoogle drive のページに移動します。

Loborisさんのイメージ公開場所(google drive)

2. この中から、以下のファイルをダウンロードします。

OrangePI_Ubuntu_Vivid_Mate.img.xz

scriptbin_kernel.tar.gz

3. それぞれ解凍します。必要なファイルは、

OrangePI_Ubuntu_Vivid_Mate.img

uImage_OPI-2
script.bin.OPI_PC_1080p60_hdmi

です。これは、OrangePI PC に、HDMIを繋いでTV(1920ドットx1080ドット)に映す場合のセッテイングです。

4. マイクロSDのセッテイングカードをWindows機にセットし、win32 Disk Imager を起動します。
マイクロSDには32GBクラス10のものを使いました。

5. OrangePI_Ubuntu_Vivid_Mate.img を書き込みます。

6.書き込みが終了すると、マイクロSDカードの容量が32GBではなく64MBになっていると思います。ドライブが見えない場合は、
SDカード取り出し、挿しなおしてみましょう。SDカード取り出し時には、「安全な取り外し」をお忘れなく。

7.このSDカードカード内に見える、uImage とか script.binなんかのファイルを全て消去します。

8.このSDカードに、さきほど解凍した、uImage_OPI-2 をコピーし、uImage という名前に変更します。

9. このSDカードに、さきほど解凍した、script.bin.OPI_PC_1080p60_hdmi をコピーし、script.bin という名前に変更します。

10.SDカードを安全に取り外します。

これで、準備は、OKです。
カードをOrangePIに指し、USBキーボードと、マウス、HDMIケーブル経由でモニタを接続し、電源ケーブルを接続して電源を入れます。

しばらくすると、ログイン画面が出てくるので、ユーザー名 orangepi パスワード orangepi でログインします。

11. ターミナルを起動します。

12. sudo modprobe gpio_sunxi を実行します。
パスワードを聞いてきますので、 orangepi と入力します。

これで、/sys/class 以下に、 gpio_sw というフォルダができると思います。

orangePI PC 本体には基板上にLEDがが2個ついていますが、これを制御可能になります。

echo 1 > /sys/class/gpio_sw/standby_led/data

echo 0 > /sys/class/gpio_sw/standby_led/data

で、スタンバイLEDをONにしたり、OFFににしたりできます。
GPIOの10ピンはPA14のようですので、これをONOFFしたい場合は、

echo 1 > /sys/class/gpio_sw/PA14/data

echo 0 > /sys/class/gpio_sw/PA14/data

でいけます。C言語制御と読んでいいのかわかりませんがw、
C言語からONOFFするなら、以下の方法で可能です。

#include "stdio.h"
#include "stdlib.h"

int main(int argc,char ** argv)
        {
        int i;

        FILE* fp;

        fp = fopen("/sys/class/gpio_sw/PA14/data","r+");
        if (fp == NULL)
                {
                printf("OPEN ERROR\n");
                exit(1);
                }

        while(1)
                {
                fprintf(fp,"1");
                fflush(fp);
                sleep(1);
                fprintf(fp,"0");
                fflush(fp);
                sleep(1);
                }
        }

これで、ピン10と、GND(6ピン)などに、抵抗とLEDを配線すれば、LEDの点滅を見ることができます。fopen の PA14 を standby_led に変えれば、スタンバイLEDを点滅させることができます。


環境
OrangePI PC
ubuntu15.04 (Loboris さんの image)




2016年1月13日水曜日

OrangePI のフォーラムを覗いてみた

GPIOの問題を解決すべく、フォーラムを覗いてみた。で、ゲストでも読めるんだけど、登録すると、承認されるまで読めなくなるという意味不明な仕様。ログアウトして読み進めてみると、

「ブートできないー」(症状はさまざま)

「GPIOが動作しないー」

「Androidいれたら、中国語で、言葉が解らず、変更できないー」

といった、「叫び」があふれておりました。しかも、ほんの数日前に投稿された内容もあって、「あー、リアルタイムでエラいところに飛び込んだ」感が・・・

ま、せっかく買ったので後には引けないし、いろいろと調べていくことにします。


幸い、うちの環境では起こりませんでしたが、解決できないトラブルに、ブート時に赤の基板上LEDは点灯するが、HDMIには何も映らない。

というものがあるようです。使っているモニタのHDMI仕様が古いか、基板の初期不良かと思いますが、情報が何もとれず大変なようです。3ピンのTTLシリアル回線が、OrangePI PC には出ているので、別のパソコンからシリアル経由でログインできれば、ちょっとは情報つかめそうだけど、ブートしているかどうかもアヤしいようで。

基板の初期不良って可能性もあるし、どれくらいテストして出荷してるのかもアヤしいですよね。

OrangePI GPIOが動かない。


どうも標準状態では、OrangePI のGPIOコマンドが動かないようです。

当方の環境:
 ボード: OrangePI PC
 OS: raspbian (for OrangePI PC)
(2016年1月13日現在)


また、OragePI Wiki に書かれている GPIOのインストールをためそうとしても、404 not found が出ます。で、探してみると、下記のアドレスに Wiring のOrangePI用 github があるようです。

https://github.com/zhaolei/WiringOP


ダメモトで、入れてみました。具体的には、端末から、root権限で

git clone https://github.com/zhaolei/WiringOP -b h3

を実行しました。 /root にいて実行したので、/root 以下に、WiringOPができあがりました。中に入ります。

cd WiringOP

次に、その中にある、build というスクリプトに実行権限を与えます。

chmnod +x ./build

で、そのスクリプトを実行します。

./build

これで、インストールが始まるようです。終わると、gpio は更新されるようで、gpio readall を実行すると、以下のような画面がでます。



OSの標準状態でついてくるgpio の表示結果と違います。ちなみに、標準状態のgpioでは、リスト表示は内容が正確かどうかはわかりませんが、表示そのものは出ます。こんなかんじ。



しかし、IOポートの向きなどの変更コマンドを打っても、動作していないようでした。前述のアップデート(?)を行った後はどうでしょうか?残念ながらまだ動きません。どうも、

/sys/class/gpio

が存在しないようです。これが無い状態が正しいのかどうかもわかりませんが。

このあと、OSを、ubuntuに入れ替えてみたり、公式外のディスクイメージにしてみたりと、イロイロやってみましたが、未だ、GPIOが触れる環境にならず。多分、今まででLチカに一番遠いSBCじゃないかと思う。

==最終的に成功しました。==
点滅成功の話







OrangePI 外部からログイン

セットアップが終わってログインできるようになったら、まずネットワークを試してみましょう。おうち標準インターネット環境であれば、ルータがいて、DHCPサーバーが起動していると思います。OrangePI PC 上で動作するRaspbianも標準では、DHCPクライアントとして、起動時に動的にIPアドレスを取得するようになっています。ネットワークケーブルをハブにつないで起動するだけで自動的にIPアドレスを取得して、ネットに出られる状態になりました。

まず、OrangePIに割り当てられたIPアドレスを調べるために、ターミナルを起動します。他にもGUI的に確認する方法もあるのかもしれませんが、まあコマンドライン使いなもので。

ifconfig

ifconfigというコマンドで、ネットワークデバイスの現在状況を確認することができます。情報が多くて、画面がスクロールしていまう場合、

ifconfig | more

と入力して実行すれば、1画面づつ一次停止できますが、標準で日本語キーボードを繋いだ場合、正しく設定されず、記号の入力ができない可能性もあります。うちの環境では日本語キーボードとして認識されませんでした。今回は、IPアドレスを知るだけの目的なので、無視して、ターミナルウィンドウ右側にあるスクロールバーをマウスで操作して、IPアドレスがどうなっているかを調べます。

うちの環境では、IPアドレスが 192.168.11.21 になりました。


このキャプチャは、IPアドレス判明後にwindowsからログインして、ifconfigを実行したときのものですが、表示される内容は一緒です。左端に、eth0 の表示がある行の次の行
inet addr: に続いてかかれているアドレスが本機のIPアドレス(IPv4)です。

これさえわかれば、同じLANに接続されている別のパソコンからログイン可能です。通常ssh端末としては、TeraTermを使用していますので、今回もそれを使います。

TeraTerm



TCP/IPを選択、ホストには調べたIPアドレスを入力し、SSHを選択します。すると、ユーザー名とパスワードを聞いてきますので、初期ユーザーのままなら、 root 、パスワードとして orangepi を入力します。変更しておいたほうがいいのは言うまでもありません。



OrangePI PCのセットアップ

 OrangePI(オレンジパイ)はオープンソースのシングルボードコンピュータです。UbuntuやRapbianなどLinuxが動作するものです。

 OrangePIは、2016年1月現在、数種類がリリースされていますが、この中でも抜群のコストパフォーマンスを誇る、OrangePI PCについて書きます。本体基板にある40PINコネクタは、RasberryPI2と互換があるようですが、ハードウェアレベルで互換性があるわけではありません。使いはじめる上でまず違うのは電源コネクタでしょうか。

 RasberryPiはマイクロUSBから5Vを供給することで動作しますが、OrangePIは、DCジャック仕様になっています。これはこれでいいのですが、基板搭載面積の関係からか、よく出回っている5.5mm仕様のものではなく4.0mm仕様のものが使われています。確か、DCジャックは規格上は、電源電圧と使用コネクタの関係が定義されていたので、正しいサイズなのかもしれません。いずれにしても入手性は悪いです。できれば、OrangePIと同時に電源コネクタを購入したほうがいいと思います。

 OrangePIの中には基板上のeMMCを内蔵しているものもあり、パソコン的にいうと、ハードディスクやSSDなどの補助記憶装置が内蔵されているのと同じ状態のものもあります。OrangePI PC は、マイクロSDのカードスロットがあるだけで、eMMCは内蔵していませんので、別途購入する必要があります。8GBもあれば十分でしょうが、新規で購入するなら、32GBくらいのものでも2000円未満で手に入ります。

 これにOSをインストールしなければOrangePIを起動することはできません。様々なOSがorangepi.orgのサイト上で公開されており、イメージファイルをダウンロードできます。ここでは、Windows機で、SDカードをセットアップする方法について書きます。



OSのメージが公開されているページ

このページ上には、OrangePI PC 以外にも、OrangePI2 mini など、さまざまなボード向けのOSイメージが公開されており、互換性はないようです。必ず、ボードにあったイメージをダウンロードしてください。

ダウンロードしたイメージは、圧縮されていますので、これを解凍ソフトで展開します。もし、解凍ソフトがない場合、7zipなど、適当な圧縮解凍ソフトをインストールしてください。

7ZIP

次にマイクロSDカードをカードリーダなどにセットし、フォーマットします。フォーマットには、TF-Formatterを使いました。

TF Formatter

使用するSDカードのドライブがあっているかを必ず確認してください。時にUSBメモリや他のSDカードが刺さっていないか確認してください。誤って、TF Formatterを違うドライブで動作させた場合、全てのファイルが消去されるので注意してください。他のメディアは全て外しておくのが安全です。

WIN32 Disk Imager

次に、WIN32 Disk Imager というソフトを使って、さきほどダウンロード・解凍したOSイメージをSDのカードに書き込みます。

ここまでできれば、OrangePIを起動する準備が整いました。OrangePIに、HDMIやUSBキーボードを接続し、最後に電源ケーブルを接続してください。しばらくすると、OS起動画面が出てきて、やがて、ログイン画面が表示されます。今回は、Raspbian を使用しましたので、初期ユーザーは、root、パスワードは、orangepiになっていますので、これを入力して、ログインします。


家のTVにHDMI端子がついていれば、本体、SDカード、USBマウスにキーボードを買っても1万円でお釣りが来ます。これで、linuxが手に入るとは、本当に恐ろしいほどの価格破壊です。