原文を、かなり乱暴に翻訳したものです。内容については一切保証できません。

Foxberry Pi Demo

このページでは、Raspberry Piで動くRaspbianの中に、FirefoxのOSをインストールする方法を説明します。Firefox-OS-on-Raspberry-Pi projectは”Foxberry Pi”の名前で知られています。

警告:当分の間、このデモ·ソフトウェアは、文字通りデモウェアです。これは、長期的なサポートプランやAPIの互換性を保証がなく、多くの課題があります。このデモは、ほとんどが最前線のソフトウェアに対処するために用意されていて、開発者を対象としています。

警告:このガイドでは、rootとして「調査されていない」大量のコードを実行しています。 あなたのラズベリーパイは、パブリックインターネットに繋がっていない、安全なLAN上にあることを確認してください。

目次

1 謝辞
2 前提条件
3 Raspbian内にFirefoxのOSをセットアップします
4 Web 開発のためのホストを設定する
5 開発回路のセットアップ
6 Raspbian内のFirefoxのOSを実行する
7 フォローアッププロジェクト
8 ソースからのビルド
9 制限事項

謝辞

このデモは、他人の作品の断片から組み立てられています。特に素晴らしい仕事をされた、romaxa、trouch、そしてPhilipp Wagnerのおかげです。

前提条件

もちろん、ラズベリーパイを必要としています。モデルBとB+が良好に動作するはずです。このガイドでは、あなたのラズベリーパイ(以後RPiとします)が最新のRaspbian OSが動作しているとします。その他のディストリビューションは、おそらく動作しますが、テストされていません。

あなたのRPi上にWebIOPiをインストールします。先に進む前に、WebIOPiが正しく動作していることをテストしてください。

このガイドでは、RPiはイーサネットを介してホスト·マシンに接続されていると仮定しています。無線LANドングルやUSBネットワーク(その他)を介して接続が正常に動作する必要がありますが、それらはテストされていません。

ご使用のホスト·マシン上でsshfsをインストールすることを強くお勧めします。

Fedoraの上で
sudo yum install fuse-sshfs

または、Ubuntu上で、
sudo apt-get install sshfs

このガイドでは、あなたのRPiは、デフォルトのユーザー “pi”での構成を前提としています。

あなたのRPiはにSSHで接続できるようにする必要があります。この意味は、

  • あなたのラズベリーパイは、SSHアクセスを有効にする必要があります
  • あなたのRPiはのホスト名またはIPアドレスのいずれかを知っている必要があります。デフォルトのホスト名は「raspberrypi」です。ここではアドレスを$rpiaddressと呼ぶことにします。

ホストコンピュータから次のコマンドを実行し、あなたのRPiにログインできることを確認してください

ssh pi@$rpiaddress

(あなたは、デフォルトでは「raspberry」でパスワードを入力する必要があります。しかし、パスワードを変更した?本当に?)

Raspbian内にFirefoxのOSをセットアップします

FirefoxのOSのデモファイルをダウンロード(http://people.mozilla.org/%7Epscanlon/foxberry-pi-demo-0.0.tar.gz)してください。あなたのRPiにパッケージをコピーしてから、RPiのユーザのホームディレクトリに展開します

cd
tar zxvf Foxberry-pi-demo-0.0.tar.gz

これはあなたのRPiのホームディレクトリにffosフォルダを作成する必要があるためです。

Web 開発のためのホストを設定する

ホスト·マシン上で開発に使用したいフォルダに移動します。$devとして、そのフォルダを参照することになります。ホストマシン上で次のコマンドを実行します。

cd $dev
mkdir ffos
sshfs pi@$rpiaddress:/home/pi/ffos ffos

これはホストマシンの$dev上に/ffosをマウントポイントとして特別なファイルシステムをマウントします。ファイルシステムがラズベリーパイの~/ffosフォルダと同期します。これは、あなたのホストコンピュータのエディタを使用してコードを開発し、明示的にファイルを同期しなくてもできるようになります。これは、通常、ほかの代替手段よりもはるかに便利です。

ホストマシン上のコード·エディタでファイル$dev/ffos/app/html/app.jsを開きます。そのファイルを開くことができない場合は、何かが…sshfsかRPiのセットアップ中に間違いがあります。

開発回路のセットアップ

このセクションでは、オプションですが、強くお勧めします。回路の構成は

  • RPiの+5Vサプライをブレッドボードの+に接続
  • RPiのグラウンドをブレッドボードのグラウンドに接続
  • プッシュボタンモーメンタリスイッチを10kΩのプルダウン抵抗を使用してGPIO22に接続
  • LEDを200Ωの負荷抵抗を使用してGPIO25に接続

あなたは、好きなピンと要素を使用することができます。しかし、デモコードは、上記の各端子の構成を前提としています。

押しボタンスイッチは、最も重要な要素です。
回路のイメージは参考のために含まれています

Raspbian内のFirefoxのOSを実行する

これでホストマシン、RPiは、開発回路が設定されていることでは、デモを実行することができます。あなたのRPiはのHDMI出力は、テレビやモニタに接続されていることを確認してください。FirefoxのOSがGPUのフレームバッファに直接描画しますので、X11を使用しません。このため、現在のFirefox OSのディスプレイをリモート処理することができません。

次のコマンドでFFOSを開始

ssh pi@$rpiaddress
sudo ./ffos/start.sh

FirefoxのOSは、Raspbian内のchroot環境内で実行されます。

ログはコンソールに吐き出されます。最後に、FirefoxのOSは、デモアプリケーションをロードします。 すべてがうまくいけば、画面を毎秒緑と黒で点滅します。あわせてデモ回路内のLEDが、画面と一緒に点滅します。

最後に、$dev/ffos/app/html/app.jsの開いているコピーに戻ります。文字列 ‘green’を見つけ、そこを’pink’に変更します。ファイルを保存します。

Webアプリケーションをリロードするします。実はFoxberry Piは「リロードボタン」をもっている! 物理的なボタン、あなたの開発回路用に用意されている!ボタンを、数秒間を押してください。Webアプリケーションはリロードされ、画面のバックグラウンドは、黒/緑から替わり、ピンク/黒の点滅を開始します。

そうです、Foxberry Piは組み込みデバイス上でセーブ·リロードできるWeb開発を可能にします。

おめでとう!あなたはFoxberryパイ用のアプリケーションを開発する準備が整いました。

フォローアッププロジェクト

ffos/app/html/foxberry-pi.jsのAPIでnavigator.mozGpioのpolyfillシムを拡張します(※訳注:ここがいまいちわかりませんでした)

  • PWM信号を出力する
  • 単一パルスを出力
  • SPI通信
  • i2c通信
  • シリアル(UART)通信

他のデバイスが含まれたデモ回路を構築
(この時点では、Firefox OS自体の構築における問題をデバッグするために試してみる価値はありません。コードが最も可能性の高い行き止まりです。)

ソースからのビルド

ラズベリーパイのためのFirefox OS(非常に古いバージョン)を構築するために、ここでの指示に従ってください。Raspbianを実行する必要がない場合にも、そのサイトから事前に構築された純FFOSディスクイメージをダウンロードすることができます。

navigator.mozGpio APIシムとサンプルのWebアプリは(FFOS-in-Raspbianのためのいくつかのヘルパースクリプトと一緒に)、このリポジトリでホストされている。あなたが上記のようにnavigator.mozGpioを拡張する挑戦をする場合は、パッチがマージされているために、そのレポにプル要求を行ってください!:)

このページ上でホストされているFFOS-in-RaspbianイメージはフィリップのFFOSシステムイメージとFoxberryのPiデモコードから手で組み立てた。

制限事項

  • イメージに含まれるFirefox OSのビルドは非常に古いです
  • すべてのデバイス機能は、Web APIを介して公開されるわけではありません
  • マウスやキーボードのサポートありません
  • ディスプレイのリモート処理はできません
  • 出力ディスプレイとして使用される少なくとも1つのテレビで、グラフィックスは故障しがちです
    ビューポートの左側がクリップされ、右側には空白を残すTVの右端からオフセットされています
  • 遅くてバギーです