最近良く聞かれること.「Raspberry Pi で Windows が動くようになったんだって?」 はいでもありいいえでもあります.Windows 10 IoT Core というバージョンが Raspberry Pi 2 model B ( と MinnowBoard? Max )向けに提供されています.IoT 向けで Windows で一般的な GUI は実装されていませんし,導入に Windows が必須で開発にも Windows と Visual Studio が必要です.私は Windows を仮想マシンの中にしか持っていなかったり,Linux の方が慣れているので今のところあまり魅了を感じません(Microsoft HoloLens? とかが遊べるなら試したいかも).元々 Windows で開発をされている方とかにはいいのかもしれません.
追記) 以下のページで動作デバイスの確認が出来るようです.ボードによってサポート状況は違うみたいですね. 追記2) 2014年12月30日のコミックマーケット87の「matoken's meme」で頒布した,「RaspberryPi?で遊ぼう!」はアリスブックさんで委託販売中です.
Raspberry Pi | An ARM GNU/Linux box for $25. Take a byte! Raspberry Pi は手のひらサイズのLinux ボードです.値段も$35(model B)と安くお手軽に遊べます. CPU は ARM を採用しており Linux のイメージが提供されています.(*BSD 等他の OS を動かしている人も) この値段ですが,USB x2 や RJ-45 や GPIO も付いていて色々な 用途に使えそうです. しかし,入手性が悪く注文してから何ヶ月もかかる状態でした.最近は注文してから 3 週間ほどで届くようになったり,日本のお店でも買えるようになったりと入手性も良くなってきています. 手乗りLinux を始めましょう :-) R Pi の種類 †Raspberry Pi には幾つか種類があります. 大きく分けて model A, model B の 2 種類. それとmodel B の RAM の容量違いがあります. model A と model B の違いは,model A は model B の廉価版と位置づけられていて,model A は USB Port が 1 つでネットワークもありません. そのかわり安価($25)で省電力(500mA)になっています. (その他 model B には生産場所により GPIO のピン配置が違うものもあるらしいのですが未確認です) %%ただ,model A は未発売で model B も 9 月後半からはすべて 512MB モデルに切り替わってい るので現在は model B の 512MB モデルしか入手できないはずです. (model B 256MB モデ ルが流通在庫で残っている可能性はあるので購入時は念の為 512MB モデルか確認しましょう)%% 02/04 model A 販売開始ただし未だ日本向けはないようです
※1 2012 年 9 月半ばまでは 256MB だったが,それ以降は 512MB になっている. 消費電力 †
購入 †RS †発注 : 2012/07/18 ※最近は3週間ほどで届いているらしい. https://plus.google.com/u/0/107154031901743896712/posts/DGT3qriopqh Adafruit †
発送からの時間が長かったのでけちらずに速い郵便にするべきだったかも. ModMyPi? †
PiBow? のPirate Store †
秋葉原 †
その他 †
必須アクセサリ †Raspberry Pi は基本的に基盤のみです.以下のものを揃える必要があります.
お勧めアクセサリ †
NOOBS でOS 導入 †FAT なSD Card に展開するだけ. % unzip -x /media/mk/ex/image/NOOBS_v1_3_4.zip -d /media/mk/63BF-4E41 Raspbian 導入 †RaspbianInstaller - Raspbian よりインストーラ入手. $ wget http://files.velocix.com/c1410/images/raspbian/2012-10-28-wheezy-raspbian/2012-10-28-wheezy-raspbian.zip $ wget http://downloads.raspberrypi.org/images/raspbian/2012-10-28-wheezy-raspbian/2012-10-28-wheezy-raspbian.zip.sha1 $ sha1sum -c 2012-10-28-wheezy-raspbian.zip.sha1 sha1sum: /home/eben/images/raspbian/2012-10-28-wheezy-raspbian/2012-10-28-wheezy-raspbian.zip: そのようなファイルやディレクトリはありません /home/eben/images/raspbian/2012-10-28-wheezy-raspbian/2012-10-28-wheezy-raspbian.zip: オープンまたは読み込みに失敗しました sha1sum: 警告: 一覧にある 1 個のファイルが読み込めませんでした? $ cat 2012-10-28-wheezy-raspbian.zip.sha1 3ee33a94079de631dee606aebd655664035756be /home/eben/images/raspbian/2012-10-28-wheezy-raspbian/2012-10-28-wheezy-raspbian.zip oh...path を削って再度. $ cat 2012-10-28-wheezy-raspbian.zip.sha1 3ee33a94079de631dee606aebd655664035756be 2012-10-28-wheezy-raspbian.zip $ sha1sum -c 2012-10-28-wheezy-raspbian.zip.sha1 2012-10-28-wheezy-raspbian.zip: OK
イメージの展開と書き込み. $ sudo sh -c "zcat 2012-10-28-wheezy-raspbian.zip | dd of=/dev/sdb" R pi にSD Card 挿入. Network Cable 接続. 最後にmicroUSB(電源)接続. ※はじめ何度やっても起動しなかったが,SD Card を交換したらうまく行った.Crad 不良だったらしい. > その後ダメだったCard を dd if=/dev/zero of=/dev/sdb とかして塗りつぶしてから再度試した動いた. ※Mac OS X だとデバイス名以外は同じ手順でOK. Windows だとdd for windows を導入したり,GUI だとWin32 Disk Imager などが利用できると思います.
arp やnmap やdhcpd log からip 確認 $ arp $ sudo nmap -sP 192.168.1.100-150 % sudo nmap -sP 192.168.2.1-255|grep 'MAC Address: B8:27:EB:' -B 2 Nmap scan report for 192.168.2.218 Host is up (-0.071s latency). MAC Address: B8:27:EB:63:9D:B2 (Raspberry Pi Foundation) 接続 初期パスワードは raspberry $ ssh pi@192.168.1.104 -o PreferredAuthentications=password Host key fingerprint is 2a:04:7c:37:78:a3:b8:6a:3d:1e:df:3f:6a:24:7a:b6 +--[ECDSA 256]---+ | | | . . | | o o = | | + + o | | . o S | | o . o | | o.o + | | o +o+.. . | |o ..+Eooo.. | +-----------------+ pi@192.168.1.121's password:  Authenticated to 192.168.1.121 ([192.168.1.121]:22). Linux raspberrypi 3.2.27+ #250 PREEMPT Thu Oct 18 19:03:02 BST 2012 armv6l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. /usr/bin/xauth: file /home/pi/.Xauthority does not exist NOTICE: the software on this Raspberry Pi has not been fully configured. Please run 'sudo raspi-config' pi@raspberrypi ~ $ という事で設定 $ sudo raspi-config ┌──────────────────────────────────────────────────────────────────────────────┐ │ Raspi-config │ │ │ │ info Information about this tool │ │ expand_rootfs Expand root partition to fill SD card │ │ overscan Change overscan │ │ configure_keyboard Set keyboard layout │ │ change_pass Change password for 'pi' user │ │ change_locale Set locale │ │ change_timezone Set timezone │ │ memory_split Change memory split │ │ overclock Configure overclocking │ │ ssh Enable or disable ssh server │ │ boot_behaviour Start desktop on boot? │ │ update Try to upgrade raspi-config │ │ │ │ │ │ <Select> <Finish> │ │ │ └──────────────────────────────────────────────────────────────────────────────┘
再起動で反映. 簡単な意訳
source.list をmirror に変更 †/etc/apt/sources.list deb http://ftp.jaist.ac.jp/raspbian wheezy main contrib non-free rpi locale 設定 †$ sudo apt-get install locales $ sudo dpkg-reconfigure locales en_GB.UTF-8 は消して,en_US.UTF-8/ja_JP.UTF-8 を入れている. デフォルトは環境によりfbterm やx を常用する場合は ja_JP.UTF-8 にしている. zram †Raspbian Wheezyにzramを導入してみた。 - もぐてっく を参考に. /etc/rc.local の最後のexit 0 の前に以下を追記 # enable zram modprobe zram echo $((256 * 1024 * 1024)) > /sys/block/zram0/disksize mkswap /dev/zram0 swapon -p 1 /dev/zram0 256MB にしてみた. 再起動して確認. $ cat /proc/swaps Filename Type Size Used Priority /var/swap file 102396 0 -1 /dev/zram0 partition 262140 0 1 over clock †通常の状態で数日連続稼働. 安定しているのでover clock を試す. $ sudo raspi-config の overclock から設定可能. ┌──────────────────────────────────────────────────────────┐ │ Chose overclock preset │ │ │ │ None 700MHz ARM, 250MHz core, 400MHz SDRAM, 0 overvolt │ │ Modest 800MHz ARM, 250MHz core, 400MHz SDRAM, 0 overvolt │ │ Medium 900MHz ARM, 250MHz core, 450MHz SDRAM, 2 overvolt │ │ High 950MHz ARM, 250MHz core, 450MHz SDRAM, 6 overvolt │ │ Turbo 1000MHz ARM, 500MHz core, 600MHz SDRAM, 6 overvolt│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ <Ok> <Cancel> │ │ │ └──────────────────────────────────────────────────────────┘ $ cat /proc/cpuinfo Processor : ARMv6-compatible processor rev 7 (v6l) BogoMIPS : 697.95 Features : swp half thumb fastmult vfp edsp java tls CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xb76 CPU revision : 7 Hardware : BCM2708 Revision : 000f Serial : 00000000dd1e9672 BogoMIPS は変わらんような? Avahi(Bonjour) †dhcp でip を取得するとip がわからなくなります. $ sudo nmap -sP 192.168.1.1-255 とかするとわかるけど面倒です. Avahi を使って判りやすくします. 導入 $ sudo apt-get install avahi-daemon これで,ホスト名.local という名前が利用できるようになる. #update-rc.d はしなくても設定されていた $ ls /etc/rc?.d/*avahi* /etc/rc0.d/K02avahi-daemon /etc/rc2.d/S03avahi-daemon /etc/rc4.d/S03avahi-daemon /etc/rc6.d/K02avahi-daemon /etc/rc1.d/K02avahi-daemon /etc/rc3.d/S03avahi-daemon /etc/rc5.d/S03avahi-daemon $ ping raspberrypi.local PING raspberrypi.local (192.168.1.106) 56(84) bytes of data. 64 bytes from raspberrypi.local (192.168.1.106): icmp_req=1 ttl=64 time=1.04 ms 64 bytes from raspberrypi.local (192.168.1.106): icmp_req=2 ttl=64 time=4.14 ms : 他のマシンから参照してみる. $ /usr/bin/avahi-browse -t -a|grep -i raspberrypi + wlan0 IPv4 raspberrypi Remote Disk Management local + wlan0 IPv4 raspberrypi [b8:27:eb:1e:96:72] Workstation local + wlan0 IPv4 raspberrypi [e0:91:53:70:eb:5a] Workstation local #このツールは avahi-utils に入っている.gui だと avahi-discover が便利. ssh 接続の場合なんかも,以下のような感じでいける. $ ssh pi@raspberrypi.local
コマンドラインでBluetooth 設定 †
モードを戻す(hiddenに) $ sudo hciconfig hci0 noscan
SPPが見つからなかったら追加する $ sdptool add --channel=22 SP
2回めからは $ sudo bluetooth-agent --path /org/bluez/21109/hci0/dev_BC_F5_AC_32_AC_10 508531 & $ sudo rfcomm connect hci0 4C:B1:99:1A:70:AD & SD †相性があるようなので手元で確認できたものをメモしておく.
USB †通常のPC などでは500mA 使えるが,R Pi は100mA 迄.そのため電力が足りなくてUSB 機器が動かなかったり,R Pi の動作が不安定になったりする. 電源付きのUSB ハブを経由してUSB 機器を利用すれば動作する. 動作確認機器 †以下は手元で動作確認したUSB 機器 USB 直接続OK †
電源付きUSB ハブ経由で動作OK †無線LAN 接続 †このあたりはR Pi はほとんど関係なくてDebian の話ですが. GUi で設定 †GUI 設定画面を起動します. $ gksudo wpa_gui & Adapter を選択します.(wlan0 等) AP の設定を入力します(家の WPA2-Personal(PSK) の場合は[PSK]欄にパスフレーズ入
力だけ) [ADD]ボタンで設定反映します. ※次回以降の 2 回目からはこの設定を覚えているの
で,Adapter を選択,Network 選択,[Connect]ボタンで OK です. 無線 LAN に接続できたら IP の取得と確認を行います. $ sudo dhclient wlan0 $ ifconfig wlan0 CLI で設定 †CLI で設定する場合に便利なコマンド.
OpenWiFi? †/etc/network/interfaces に以下のような設定を追加 allow-hotplug wlan0 iface wlan0 inet dhcp wireless-essid 利用したい無線のESSID WEP †WPA/PSK †/etc/network/interfaces に以下のような設定を追加 auto wlan0 iface wlan0 inet dhcp    wpa-ssid 利用したい無線のESSID    wpa-psk パスフレーズ しかし,これだとパスフレーズがそのまま表示されてよろしくない. wpa_passphrase を使って暗号化しておく. $ wpa_passphrase 利用したい無線のESSID パスフレーズ network={ ssid="利用したい無線のESSID" #psk="パスフレーズ" psk=4122100422cd255a3a8b7518c78bcb7e66dcd9cb6b03426eb45f45ee2ab7872a } これを元に,/etc/network/interfaces のwpa-psk を差し替え. auto wlan0 iface wlan0 inet dhcp wpa-ssid 利用したい無線のESSID wpa-psk 4122100422cd255a3a8b7518c78bcb7e66dcd9cb6b03426eb45f45ee2ab7872a 複数の設定 †GPIO を触ってみる. †物理的なポートは以下を参照 # cat gpiotest.pl #!/usr/bin/perl `echo "4" > /sys/class/gpio/export`; # GPIO4 を使う準備 `echo "out" > /sys/class/gpio/gpio4/direction`; # GPIO4 をout で利用 while(1){ $n=($n+1)%2; `echo "$n" > /sys/class/gpio/gpio4/value`; # 1でLED On/0でLED Off sleep 1; # 1秒毎に点滅 } 回路はGPIO Pin とLED の間に制限抵抗を挟んだだけ. GPIO をpi ユーザで †動いたけどいちいちsudo するのは面倒です. $ find /sys/class/gpio/ -ls 47 0 drwxr-xr-x 2 root root 0 Dec 16 01:09 /sys/class/gpio/ 48 0 --w------- 1 root root 4096 Dec 16 01:09 /sys/class/gpio/export 49 0 --w------- 1 root root 4096 Dec 16 02:37 /sys/class/gpio/unexport 1265 0 lrwxrwxrwx 1 root root 0 Dec 16 02:37 /sys/class/gpio/gpiochip0 -> ../../devices/virtual/gpio/gpiochip0 以下のようなファイルを作成.gpio グループで読み書きが出来るようにする. $ cat /etc/udev/rules.d/91-gpio.rules KERNEL=="gpio*", MODE:="0660", GROUP:="gpio" gpio グループを作成. $ sudo addgroup gpio 何時も使うユーザをgpio グループに追加 $ sudo usermod -G gpio pi 追加されたのを確認 $ grep ^gpio: /etc/group gpio:x:1001:pi 再起動 あれ?うまくいかない $ find /sys/class/gpio/ -ls 47 0 drwxr-xr-x 2 root root 0 Dec 16 02:50 /sys/class/gpio/ 48 0 --w------- 1 root root 4096 Dec 16 02:50 /sys/class/gpio/export 49 0 --w------- 1 root root 4096 Dec 16 02:50 /sys/class/gpio/unexport 1265 0 lrwxrwxrwx 1 root root 0 Dec 16 02:50 /sys/class/gpio/gpiochip0 -> ../../devices/virtual/gpio/gpiochip0 $10のRealTime? module を使う †ネットワークが使えない場合に便利.
sudo apt-get update sudo apt-get upgrade sudo apt-get install git python-smbus i2c-tools sudo sh -c 'sed -i -e "s/^blacklist i2c-bcm2708$/#blacklist i2c-bcm2708/" /etc/blacklist.conf' sudo sh -c 'sed -i -e "s/^blacklist spi-bmc2708$/#blacklist spi-bmc2708/" /etc/blacklist.conf' sudo sh -c "echo 'snd-bcm2835' >> /etc/modules" sudo sh -c "echo 'i2c-dev' >> /etc/modules" sudo reboot sudo i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- mkdir GIT cd GIT git clone https://github.com/wyolum/Epoch.git cd Epoch sudo python Epoch.py 2013-10-27 18:24:22 2013-10-27 18:24:23 起動時に反映 sudo modprobe rtc-ds1307 sudo sh -c "echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device" sudo sh -c "echo 'rtc-ds1307' >> /etc/modules" sudo sh -c "echo 'echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device' >> /etc/rc.local" sudo sh -c "echo 'sudo hwclock -s' >> /etc/rc.local" sudo sh -c 'sed -i -e "s/^exit 0$//" /etc/rc.local' sudo sh -c "echo 'exit 0' >> /etc/rc.local" 20140728 RaspberryPi? B+ 動作確認OK Serial 接続 †X飛ばすとかは出来ないけれどheadless で利用するのに便利. TTL Adapter †SparkFun? FTDI Basic Breakout - 3.3V †RX(15) をTX にTX(14) をRX にGND をGND に接続. 接続には以下のものを利用. $ cu -l /dev/ttyUSB1 -s 115200 Connected. Debian GNU/Linux wheezy/sid raspberrypi ttyAMA0 raspberrypi login: pi Password: Last login: Mon Dec 24 22:21:57 JST 2012 from 192.168.1.108 on pts/1 Linux raspberrypi 3.2.27+ #250 PREEMPT Thu Oct 18 19:03:02 BST 2012 armv6l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. pi@raspberrypi:~$ 普通に使える. PL2303HX to USB TTL †DX.com で$3以下で購入. 最近は同じものが日本でも売ってるがちょっと割高 以下のように接続して動作した.
※色はロットなどによって変わる可能性もあるので注意. dmesg [154522.798936] usb 1-1.2: new full-speed USB device number 19 using ehci-pci [154522.895713] usb 1-1.2: New USB device found, idVendor=067b, idProduct=2303 [154522.895718] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [154522.895721] usb 1-1.2: Product: USB-Serial Controller [154522.895722] usb 1-1.2: Manufacturer: Prolific Technology Inc. [154522.896139] pl2303 1-1.2:1.0: pl2303 converter detected [154522.897841] usb 1-1.2: pl2303 converter now attached to ttyUSB1 % lsusb -d 067b:2303 Bus 001 Device 019: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port % lsusb -d 067b:2303 -vvv ※USB 部分はパカッと開いてしまうのでテープで巻いたりホットボンドで止めるなどしたほうが良い Android でも接続できた boot message †Raspbian での設定 †規定で接続できるが設定は以下の部分
逆にTTLの機器を接続したい場合はここを削る. kismet を動かしてコミケのESSID を記録してみる(WAR Driving) †ここ数年コミケではモバイルWiFi? ルータのESSID で遊ぶ人が多いです.これを記録するのにNotePC だとバッテリの持ちや熱が心配です. 以前はiPad で記録していたのですがその時のsoft はJB しないと使えないものでiPad 3G にしてまだJB してないので使えませんでした. そこで,R Pi をバッテリで動かしてkismet で記録してみるといいかもと思って試してみました. バッテリはcheero Power Plus 10000mAh を利用. ほぼ満充電(前日に充電にしておいた)で7時間40分ほど動かして目盛りが3/5 になっていました.まだまだ動きそうです. WiFi? モジュールはBUFFALO WLI-UC-GNM2 を利用.2.4GHz のみ対応なので,5GHz も対応したもので次は試したい. もうひとつUSB WiFi? ドングルを挿してそっちで状態確認ができるようにしておくと良かったかもしれません. 今回は場所固定だったのでやっていませんが,GPS も接続するとログに位置情報も記録できます. 参考URL 導入 †普通にpkg から $ sudo apt-get install kismet kismet の設定 †/etc/kismet/kismet.conf を編集. 13c13 < #suiduser=your_user_here --- > suiduser=pi 27c27 < source=none,none,addme --- > source=ath5k,wlan0,pi この状態でkismet の動作を確認しておく. kismet の自動起動 †出先でR Pi を操作するのが面倒なのでkismet を自動起動するようにしておく. /etc/rc.local に以下を追記. /usr/bin/kismet_server 再起動してkismet が自動的に起動してログが作られるのを確認する. kismet のログ確認 †/var/log/kismet 以下にログが生成される. 日本語AP 等文字参照になっているので変換が必要. AP 数 $ wc -l Kismet-Dec-31-2012-2.csv 12109 Kismet-Dec-31-2012-2.csv MAC アドレスで集計してユニークなAP 数 $ wc -l Kismet-Dec-31-2012-2.csv 12109 Kismet-Dec-31-2012-2.csv ESSID 種類 $ cut -f3 -d\; Kismet-Dec-31-2012-2.csv| sort -n | uniq | wc -l 5224 ESSID 出現数順 $ cut -f3 -d\; Kismet-Dec-31-2012-2.csv| sort -n | uniq -c | sort -n | tail 30 wifine 41 Wi2 41 mobilepoint 52 0001softbank 58 Wi2premium 106 0002softbank 145 PSP_ANPJH50352_L_GodEater 195 PSP_ANPJH50332_L_DISCOVER 740 Nintendo_3DS_continuous_scan_000 4828 <no ssid> 日本語とか $ cut -f3 -d\; Kismet-Dec-31-2012-2.csv|perl -pe 's/\\(\d+)/chr(oct($1))/eg;' USB WiFI モジュールが2.4GHz のみ対応のものだったので,5GHz は拾えていない.以下のあたりが両対応(chip はRTl8192DU )らしい. XBMC †Paspberry Pi modelB 256MB 版に1GB SD で試している. Raspbmc » Download > Raspbmc » OS X / Linux installation と辿ってLinux 用のインストールイメージを入手してroot 権限で実行. 導入用Script を入手(Windows/Mac,Linux 用がある) $ python install.py Raspbmc installer for Linux and Mac OS X http://raspbmc.com ---------------------------------------- Please re-run this script with root privileges, i.e. 'sudo ./install.py' 実行 $ sudo python install.py Raspbmc installer for Linux and Mac OS X http://raspbmc.com ---------------------------------------- Please ensure you've inserted your SD card, and press Enter to continue. Enter the 'Disk' you would like imaged, from the following list: Disk /dev/mapper/sdb5_crypt doesn't contain a valid partition table Disk /dev/mapper/x220-root doesn't contain a valid partition table Disk /dev/mapper/x220-swap_1 doesn't contain a valid partition table Disk /dev/sda: 600.1 GB, 600127266816 bytes Disk /dev/mapper/sdb5_crypt: 599.9 GB, 599867260928 bytes Disk /dev/mapper/x220-root: 575.6 GB, 575571755008 bytes Disk /dev/mapper/x220-swap_1: 24.3 GB, 24293408768 bytes Disk /dev/sdb: 500.1 GB, 500107862016 bytes Disk /dev/mmcblk0: 966 MB, 966787072 bytes Enter your choice here (e.g. 'mmcblk0' or 'sdd'): mmcblk0 ※SD Card のデバイスを指定.間違えると悲しいことになるので注意. It is your own responsibility to ensure there is no data loss! Please backup your system before imaging You should also ensure you agree with the Raspbmc License Agreeement Are you sure you want to install Raspbmc to '/dev/mmcblk0' and accept the license agreement? [y/N] y Downloading, please be patient... Downloaded 15.79 of 15.79 MiB (100.00%) Please wait while Raspbmc is installed to your SD card... (This may take some time and no progress will be reported until it has finished.) 0+2342 レコード入力 0+2342 レコード出力 76800000 バイト (77 MB) コピーされました、 0.582415 秒、 132 MB/秒 Installation complete. Mounting the drive for post-installation settings これでインストーラがSD Card に導入された.
てことで続き. ネットワークとHDMI を用意して起動.イメージのダウンロードが始まる. 2回ほど再起動して導入完了. Hulu を見たい †bluecop-xbmc-repo - Repository of XBMC video plug-ins - Google Project Hosting からrepository.bluecop.xbmc-plugins.zip を入手して導入する. するとビデオアドオンにHulu が出てくる. 設定なしだとビデオのリスト確認だけで再生できない.アカウント情報を登録すると起動しなくなった. 恐らく日本版に対応していない? GPS モジュールを接続してみる †GPIOのSerial経由でGT-723F を接続 †Serial を利用できるようにする †/boot/cmdline.txt - dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait + dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait /etc/inittab #Spawn a getty on Raspberry Pi serial line - T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100 #Spawn a getty on Raspberry Pi serial line + #T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100 dialout GROUP に pi USER を追加. $ sudo addgroup pi dialout The user `pi' is already a member of `dialout'. $ id uid=1000(pi) gid=1000(pi) groups=1000(pi),20(dialout) $ reboot 配線例 †GT-723F P1(GND) <---> Pi P1-06(GND) GT-723F P2(PWR) <---> Pi P1-01(3.3V) GT-723F P5(TTL-In) <---> Pi P14(TX) GT-723F P6(TTL-Out) <---> Pi P1-15(RX) 動作確認 †#gpscat は python-gps pkg $ gpscat -s 9600 /dev/ttyAMA0 $GPRMC,120834.000,V,0000.0000,N,00000.0000,E,000.0,000.0,280606,,,N*70 $GPGGA,120834.000,0000.0000,N,00000.0000,E,0,00,0.0,0.0,M,0.0,M,,0000*61 $GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30 $GPGSV,2,1,07,02,63,062,,26,59,190,,05,55,342,,10,30,043,*7B $GPGSV,2,2,07,29,24,314,,15,23,212,,12,07,232,*46 $GPVTG,000.0,T,,M,000.0,N,000.0,K,N*02 $GPRMC,120835.000,V,0000.0000,N,00000.0000,E,000.0,000.0,280606,,,N*71 $GPGGA,120835.000,0000.0000,N,00000.0000,E,0,00,0.0,0.0,M,0.0,M,,0000*60 $GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30 $GPGSV,2,1,07,02,63,062,,26,59,190,,05,55,342,,10,30,043,*7B ^C HOLUX M-241 をUSB 接続 †接続すると/dev/ttyUSB0 が作成される.(他にUSB Serial Device があれば末尾の番号が+される.ttyUSB1->ttyUSB2…)
HDMI-VGA 変換経由で解像度の低いモニタを利用する †HDMI to VGA adapter を利用してVGA モニタに接続することが可能. 手元のモニタは1366x768
% diff config.txt-org config.txt 25c25 < #hdmi_mode=1 --- > hdmi_mode=39 # 1360x768 60Hz リアルタイム動画配信を試してみる †Justin TV †Raspberry Pi のUSB にWebCam? とWiFi? モジュールを接続し,配信はffmpeg でエンコードを行いRTMP でJustin.tv へデータを送信しています. $ padsp ffmpeg -f video4linux2 -pix_fmt bgra -s 160x120 -r 7 -i /dev/video0 -vcodec libx264 -vpre baseline -f flv "rtmp://live.justin.tv/app/live_xxxxxx_xxxxxxxx" ※最後のlive_xxxxxx_xxxxxxxx 部分はJustin.tv にlogin した状態で http://ja.justin.tv/broadcast/adv_other#fmle にアクセスして設定ファイルをダウンロード.そのファイルの中の <stream> タグの中身を書きます. 配信は出来ましたが,160x120 でも1fps とかでした. 現在クロックアップして少しだけマシになりました. クロックアップ前 frame=39659 fps= 1 q=17.0 size= 279396kB time=37567.14 bitrate= 60.9kbits/s dup=0 drop=64 クロックアップ後(Turbo) frame= 174 fps= 2 q=19.0 size= 658kB time=51.14 bitrate= 105.4kbits/s dup=0 drop=55 p=40 ハードウェアエンコードが効いてないと思うので効くように出来ないか調べてみようと思っています.
PC をRaspberry Pi のコンソールにする. †Raspberry Pi のコンポジットをキャプチャしてPC で画面を見られないかなと試してみました. USB キャプチャを利用.$10 以下のEasyCAP を選択. 挿すと /dev/video? が作成される.(なんか1回目は大抵失敗する.その場合挿しなおして認識) $ mplayer tv:///4 -tv device=/dev/video1:norm=NTSC_M:width=720:height=480 -vf scale,pullup,pp=l5,dsize=16/9,screenshot -framedrop EasyCAP はすごい画質悪い.コンポジットとは言え悪すぎる気がします.少し値が張るけど国産の適当なものを買ったほうがいいのかも>< Amazon.co.jp: Princeton USBビデオキャプチャーユニット デジ造 映像版 PCA-DAV2: パソコン・周辺機器
というものがハードオフで\1,200- で売っていたので買ってみました.
普通に/dev/video? で繋がりました.しかし以下のようにやはりボケます.矢張りコンポジットはダメぽいですね. Mathematica †てことで入れてみる $ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install wolfram-engine 途中ライセンス確認が入ります. $ wolfram Wolfram Language (Raspberry Pi Pilot Release) Copyright 1988-2013 Wolfram Research Information & help: wolfram.com/raspi In[1]:= GUI だと $ /opt/Wolfram/WolframEngine/10.0/Executables/mathematica Mathematicaで任意画像の輪郭を数式に変換するを試してみる †Adafruit PiTFT を使う †Adafruit のRaspberry Pi のGPIO(26Pin/40Pin両対応)接続のQVGAの液晶+タッチパネル+GPIO 接続ボタンの基板. 利用には専用ドライバ等が必要.Raspbianにはバイナリパッケージが用意されている. 現在はAdafruit から導入済みのRaspbian イメージや導入用Script が用意されていて導入は簡単になった. 導入Script 実行例 $ wget http://adafru.it/pitftsh $ sudo bash ./pitftsh -t 28r -r : Would you like the console to appear on the PiTFT display? [y/n] : Would you like GPIO #23 to act as a on/off button? [y/n] : $ reboot 導入後再起動すると /dev/fb1 として利用できるようになる. mountする †SD image をmount する †Raspbian イメージは複数のパーティションを持っている.パーティション情報を確認. % /sbin/fdisk -l -u ./2015-01-31-raspbian.img Disk ./2015-01-31-raspbian.img: 3.1 GiB, 3276800000 bytes, 6400000 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x00092fac Device Boot Start End Sectors Size Id Type ./2015-01-31-raspbian.img1 8192 122879 114688 56M c W95 FAT32 (LBA) ./2015-01-31-raspbian.img2 122880 6399999 6277120 3G 83 Linux 開始ブロックを参照する.ここでは1つ目のパーティションの開始ブロックは 8192,2つ目は 122880 以下の例では1つ目のパーティションを読み込み専用で /mnt にループバックマウントしている. % sudo mount -o loop,ro,offset=`expr 8192 \* 512` ./2015-01-31-raspbian.img /mnt loop デバイス経由のほうが解りやすいかも? kpertx とかも便利 qemuでhostPC(amd64)でupdateしたりするのも速くて便利 でもdiskfullになりがちなのでそういう場合は拡大 USB-OTG †Raspberry PiではA/A+/Zero/Zero W/ZwroHW/CM で可能(手元ではZeroHW/CMは未検証) /boot/config.txt を編集する必要がある. Zero $ echo "# USB OTG dtoverlay=dwc2" | sudo tee -a /boot/config.txt A/A+ $ echo "# USB OTG dtoverlay=dwc2,dr_mode=peripheral" | sudo tee -a /boot/config.txt 再起動で反映 ※Aについては以下のコメントが参考になった sebdl commented on 30 May 2017 Regarding dwc2 on raspberry A+. After some search I found this very interesting for me: https://github.com/raspberrypi/firmware/blob/master/boot/overlays/README. I managed to make it work without hw modifications, so just added: dtoverlay=dwc2,dr_mode=peripheral in file /boot/config.txt. Of course you can't change mode dinamically but for my purpose it does the trick! @gbaman if you update HowToOTG.md with this maybe will be useful for others. Many Thanks! シリアルを使ってみる †Raspberry Pi側でシリアルの g_serial moduleを読み込む $ sudo modprobe g_serial $ lsmod|grep g_serial g_serial 3753 0 libcomposite 49383 3 usb_f_acm,usb_f_rndis,g_serial $ dmesg | tail -8 [ 332.804810] g_serial gadget: Gadget Serial v2.4 [ 332.804840] g_serial gadget: g_serial ready [ 332.804887] dwc2 20980000.usb: dwc2_hsotg_enqueue_setup: failed queue (-11) [ 332.807914] dwc2 20980000.usb: bound driver g_serial [ 333.013000] dwc2 20980000.usb: new device is high-speed [ 333.093343] dwc2 20980000.usb: new device is high-speed [ 333.161825] dwc2 20980000.usb: new address 26 [ 335.546058] g_serial gadget: high-speed config #2: CDC ACM config /dev/ttyGS0 が生えてくる $ ls -ltr /dev/tty*| tail -2 crw-rw---- 1 root dialout 243, 0 12月 24 18:24 /dev/ttyGS0 crw------- 1 pi tty 204, 64 12月 24 18:33 /dev/ttyAMA0 PC側での認識例(/dev/ttyACM0として認識) [137739.592791] usb 4-1.2: new high-speed USB device number 26 using ehci-pci [137739.701258] usb 4-1.2: New USB device found, idVendor=0525, idProduct=a4a7 [137739.701264] usb 4-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [137739.701268] usb 4-1.2: Product: Gadget Serial v2.4 [137739.701271] usb 4-1.2: Manufacturer: Linux 4.4.34+ with 20980000.usb [137739.701419] usb 4-1.2: Device is not authorized for usage [137742.073829] cdc_acm 4-1.2:2.0: ttyACM0: USB ACM device [137742.074747] usbcore: registered new interface driver cdc_acm [137742.074748] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters シリアルを使ってみる(叩いてみる) Raspberry Pi側で待ち受け $ cat /dev/ttyGS0 PC側からメッセージを送ってみる $ echo "hello pi." > /dev/ttyACM0 Raspberry Pi側にメッセージが出てくる hello pi. シリアルモジュールのアンロード $ sudo modprobe -r g_serial $ lsmod | grep g_serial シリアルモジュールの自動読み込み設定
$ echo "g_serial" | sudo tee -a /etc/modules どちらかの手順でOK 再起動で反映
$ sudo systemctl enable serial-getty@ttyGS0.service これでホストから繋ぐとコンソールが利用できる $ cu -l /dev/ttyACM0 -s 115200 Connected. Raspbian GNU/Linux 8 pizero ttyGS0 pizero login: ※モジュールがロードされるのが遅いのでGPIOのUARTと違いブートメッセージを見ることは出来ない(と思う) 利用例
イーサネットを使ってみる †
※A/A+ではタイミングの問題かcmdline.txtに書いてもmodulesに書いても usb0 は生えるけど利用できない? /etc/rc.local に書くとうまくip振られるまで動いた.組み合わせによってはmodprobe前にsleepで待ち入れると動いた. sleep 30 modprobe g_ether host_addr=b8:27:eb:d8:63:18 シリアルとイーサネットを同時に利用する †
マスストレージを利用する †
$ dd if=/dev/zero of=/home/pi/disk.img bs=1M count=1024 $ /sbin/mkfs.vfat /home/pi/disk.img
$ sudo modprobe g_mass_storage file=/dev/mmcblk0p3,/home/pi/disk.img イーサネット&マスストレージ&シリアルを同時に利用する †
キーボード化 †
#!/bin/bash modprobe libcomposite cd /sys/kernel/config/usb_gadget/ mkdir -p g1 cd g1 echo 0x1d6b > idVendor echo 0x0104 > idProduct echo 0x0100 > bcdDevice echo 0x0200 > bcdUSB mkdir -p strings/0x409 echo "fedcba9876543210" > strings/0x409/serialnumber echo "matoken" > strings/0x409/manufacturer echo "kbdtest" > strings/0x409/product N="usb0" mkdir -p functions/hid.$N echo 1 > functions/hid.usb0/protocol echo 1 > functions/hid.usb0/subclass echo 8 > functions/hid.usb0/report_length echo -ne \\x05\\x01\\x09\\x06\\xa1\\x01\\x05\\x07\\x19\\xe0\\x29\\xe7\\x15\\x00\\x25\\x01\\x75\\x01\\x95\\x08\\x81\\x02\\x95\\x01\\x75\\x08\\x81\\x03\\x95\\x05\\x75\\x01\\x05\\x08\\x19\\x01\\x29\\x05\\x91\\x02\\x95\\x01\\x75\\x03\\x91\\x03\\x95\\x06\\x75\\x08\\x15\\x00\\x25\\x65\\x05\\x07\\x19\\x00\\x29\\x65\\x81\\x00\\xc0 > functions/hid.usb0/report_desc C=1 mkdir -p configs/c.$C/strings/0x409 echo "Config $C: ECM network" > configs/c.$C/strings/0x409/configuration echo 250 > configs/c.$C/MaxPower ln -s functions/hid.$N configs/c.$C/ ls /sys/class/udc > UDC host PCでの認識例 [782125.818181] usb 1-1.2: new high-speed USB device number 49 using sunxi-ehci [782125.931156] input: matoken kbdtest as /devices/soc.0/1c1b000.ehci1-controller/usb1/1-1/1-1.2/1-1.2:1.0/input/input28 [782125.931652] hid-generic 0003:1D6B:0104.0017: input: USB HID v1.01 Mouse [matoken kbdtest] on usb-sunxi-ehci-1.2/input0 キーボードとして振る舞う1 # echo -ne "\0\0\x4\0\0\0\0\0" > /dev/hidg0 # echo -ne "\0\0\0\0\0\0\0\0" > /dev/hidg0
キーボードとして振る舞う2 $ echo -n "hello world!" | sudo ./scan /dev/hidg0 1 2 入力したい文字列を指定するとその文字列をテーブルで変換して渡してくれる
便利 マウス化 †マウス化script例 キーボード化とreport descripter(report_desc)行だけ変える echo -ne \\x05\\x01\\x09\\x02\\xa1\\x01\\x09\\x01\\xa1\\x00\\x05\\x09\\x19\\x01\\x29\\x03\\x15\\x00\\x25\\x01\\x95\\x03\\x75\\x01\\x81\\x02\\x95\\x01\\x75\\x05\\x81\\x01\\x05\\x01\\x09\\x30\\x09\\x31\\x15\\x81\\x25\\x7f\\x75\\x08\\x95\\x02\\x81\\x06\\xc0\\xc0 > functions/hid.usb0/report_desc マウスとして振る舞う
# echo -ne "\0\x20\0" > /dev/hidg0 #Xを+20 # echo -ne "\0\0\x20" > /dev/hidg0 #Yを+20
# echo -ne "\x1\0\0" > /dev/hidg0 # 右クリック # echo -ne "\0\0\0" > /dev/hidg0 # リリース 嵌まったところ
活用例?
Arduinoでも十分?
発表したものなど
/proc/cpuinfoのSerialを詐称する †
$ cat /proc/cpuinfo | sed -e 's/Serial.*/Serial\t\t: 00000000deadbeef/' > /tmp/cpuinfo_fake $ sudo chmod 444 /tmp/cpuinfo $ sudo chown root.root /tmp/cpuinfo $ sudo mount -o bind /tmp/cpuinfo_fake /proc/cpuinfo $ tail /proc/cpuinfo Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 5 Hardware : BCM2835 Revision : a01041 Serial : 00000000deadbeef 書籍 †
blog †
参考URL †
|