ID | pi |
Password | raspberry |
電源のmicroUSBケーブルを接続すると、Raspberry Piが起動する。
[補講]
Raspberry Piはディスク書き込みがキャッシュされてて、いきなり電源を落とすとSDカード上に作ったシステムが破損し二度と起動しなくなる可能性がある。
1:電源スイッチは無いので、次のコマンドによりOS上でシャットダウンする。
pi@raspberrypi ~ $ sudo shutdown -h now
または
pi@raspberrypi ~ $ sudo poweroff
2:モニタの表示が消え、ACTの点灯が消えていることを確認してから、電源のmicroUSBケーブルを抜く。
[補講]「ACT」と書かれた緑色のLEDが点滅している場合には、SDカードにアクセスしているので、このときは電源を切ってはいけない。 ◇
1:OSのアップデートを調べる。
pi@raspberrypi ~ $ sudo apt-get update
2:アップデート情報をもとにOSをアップデートする。
pi@raspberrypi ~ $ sudo apt-get upgrade
3:Raspberry Piのファームウェアをアップデートする。
pi@raspberrypi ~ $ sudo rpi-update
1:言語の設定を行う。
sudo raspi-config
「5 Internationalisation Options」>「I1 Change Locale」に進む。
「Configuring locales」で、次の項目を選択する。
・en_GB.UTF-8 UTF-8 ・ja_JP.EUC-JP EUC-JP ・ja_JP.UTF-8 UTF-8
「Default locale」で、「ja_JP.UTF-8」を選択する。
2:設定画面のまま続けてタイムゾーンの設定を行う。
「I2 Change Timezone」に進み、Asia、Tokyoを選択する。
[補講]ここまでの設定を施した後に、perlを実行した際にWarningが表示される際には、「.bashrc」ファイルに次を追加する。
pi@raspberrypi ~ $ export LC_ALL=ja_JP.UTF-8 pi@raspberrypi ~ $ export LANGUAGE=ja_JP.UTF-8
設定後、次のコマンドを実行する。
pi@raspberrypi ~ $ source .bashrc
Warningが表示されるか否かは、次を実行して確認できる。
pi@raspberrypi ~ $ perl -v
◇
3:ローカルのキーボードを使用する場合には、キーボードの設定を行う。
「I3 Change Keyboard Layout」を選択して、「Generic 105-Key(Intel) PC 」(「標準105キー(国際)PC」)→Japanese
4:日本語フォントをインストールする。
pi@raspberrypi ~ $ sudo apt-get install ttf-kochi-gothic xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname
コンソール上にて日本語を表示できるようにするために、jfbtermをインストールする。必要に応じてjfbtermを起動する。
pi@raspberrypi ~ $ sudo apt-get install jfbterm
その後、再起動する。
pi@raspberrypi ~ $ sudo reboot
5:デスクトップのアイコン名やLXTerminalのメニューが日本語表示されていれば成功です。
1:scim-anthyをインストールします。
pi@raspberrypi ~ $ sudo apt-get install scim-anthy
その後、再起動する。
pi@raspberrypi ~ $ sudo reboot
2:Text Editorを起動して、日本語の入力ができるかを確認する。
キーボードの[全角/半角]キーまたは[Ctrl]+[Space]キーで全角入力モードを切り替えることができる。
pi@raspberrypi ~ $ ip addr show wlan0 3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:22:cf:f5:f0:77 brd ff:ff:ff:ff:ff:ff inet 192.168.1.188/24 brd 192.168.1.255 scope global wlan0 ←ここの「/24」より前の部分。 valid_lft forever preferred_lft forever inet6 fe80::d70c:43f6:e871:4516/64 scope link valid_lft forever preferred_lft forever
パワーマネジメント機能が有効になっていると、無線LANアダプタが切断されることがある。
まず、パワーマネジメント機能の有効・無効を確認するためには、iwconfigコマンドを実行する。
pi@raspberrypi ~ $ iwconfig wlan0 IEEE 802.11bgn ESSID:"ASUS" Nickname:"<WIFI@REALTEK>" Mode:Managed Frequency:2.437 GHz Access Point: 30:5A:3A:C6:79:38 Bit Rate:72.2 Mb/s Sensitivity:0/0 Retry:off RTS thr:off Fragment thr:off Power Management:off ←ここ Link Quality=100/100 Signal level=99/100 Noise level=0/100 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 lo no wireless extensions. eth0 no wireless extensions.
しかし、「Power Management:off」と表示されているにもかかわらず、実際には有効になっている機種もある。
無効にするためには、次のファイルを新規作成してから、再起動する。
pi@raspberrypi ~ $ sudo vi /etc/modprobe.d/8192cu.conf pi@raspberrypi ~ $ cat /etc/modprobe.d/8192cu.conf options 8192cu rtw_power_mgnt=0 rtw_enusbss=1 rtw_ips_mode=1 pi@raspberrypi ~ $ sudo reboot
[補講]次のサイトを参考にした。
◇
デフォルトではDHCPになっており、IPアドレスが変わるため、SSHでリモートアクセスする際に不便です。
pi@raspberrypi ~ $ sudo vi /etc/network/interfaces
デフォルトでは次のようになっている。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
これを次のように書き換える。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
家ではルーター付属のAP、外ではモバイルルーターを利用するという状況を考える。Raspberry Pi内の設定を変更せず、自動的に固定IPアドレスに切り替える方法は次の通りである。Raspberry Piを持ち歩くという状況は少ないかもしれないが、まぼろし博覧会のイベント会場でRaspberry Piを使用する場面があったので紹介する。
以下の方法を試す前に、設定ファイルはバックアップします。また、万が一に備えて、キーボードやモニターなどローカルから確認できる環境を整えます。
1:"/etc/wpa_supplicant/wpa_supplicant.conf"ファイルを編集する。
pi@raspberrypi ~ $ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="ASUS" psk="??????????" ←本来はパスワードの平文が入っている。 key_mgmt=WPA-PSK id_str="HomeWifi" ←識別するための文字列 } network={ ssid="501HWa-548D8F" psk="??????????" ←本来はパスワードの平文が入っている。 key_mgmt=WPA-PSK id_str="MobileWifi" ←識別するための文字列 }
[補講]priorityを設定すると優先度を指定できる。 ◇
2:"/etc/network/interfaces"ファイルを編集する。
pi@raspberrypi ~ $ cat /etc/network/interfaces auto lo iface lo inet loopback iface eth0 inet static address 192.168.1.189 netmask 255.255.255.0 gateway 192.168.1.1 allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface HomeWifi inet static address 192.168.1.188 netmask 255.255.255.0 gateway 192.168.1.1 iface MobileWifi inet static address 192.168.128.188 netmask 255.255.255.0 gateway 192.168.128.1
3:設定を反映させるために再起動する。
pi@raspberrypi ~ $ sudo reboot
[参考]
◇
ここでは、「応仁のLAN」というSSIDを用いているものとします。
pi@raspberrypi ~ $ sudo iwlist wlan0 scan
スキャンすると、それらしきものが表示される(最後の"LAN"という部分、「"\○○」が複数出ることで推測)。
ESSID:"\xE5\xBF\x9C\xE4\xBB\x81\xE3\x81\xAELAN"
これをそのまま"/etc/wpa_supplicant/wpa_supplicant.conf"ファイルで指定したがダメだった。
↓ダメな例
network={ ssid="\xE5\xBF\x9C\xE4\xBB\x81\xE3\x81\xAELAN" psk="hogehoge_password" proto=WPA2 key_mgmt=WPA-PSK }
ここではまったが、普通に日本語を指定すればうまくいった。
↓うまくいった例
network={ ssid="応仁のLAN" psk="hogehoge_password" proto=WPA2 key_mgmt=WPA-PSK }
VNCサーバー(Raspberry Pi側) | TightVNC |
VNCクライアント(Windows側) | RealVNC Viewer |
[補講]VNCサーバーにX11VNCを使うと、デフォルトデスクトップがそのまま出力される。 ◇
1:Raspberry PiにtightVNCをインストールする。
pi@raspberrypi ~ $ sudo apt-get update pi@raspberrypi ~ $ sudo apt-get install tightvncserver
2:VNCサーバーを起動する。
pi@raspberrypi ~ $ tightvncserver
初回はパスワードの入力を促される。
次のコマンドで起動を確認する。
pi@raspberrypi ~ $ ps -ef | grep tightvnc | grep -v grep pi 3300 1 0 12:03 pts/1 00:00:00 Xtightvnc :1 -desktop X -auth /home/pi/.Xauthority -geometry 1024x768 -depth 24 -rfbwait 120000 -rfbauth /home/pi/.vnc/passwd -rfbport 5901 -fp /usr/share/fonts/X11/misc/,/usr/share/fonts/X11/Type1/,/usr/share/fonts/X11/75dpi/,/usr/share/fonts/X11/100dpi/ -co /etc/X11/rgb
さらに、待ち受けポート番号を確認するために、次のコマンドを入力する。5901番がLISTEN状態になっている。
pi@raspberrypi ~ $ netstat -lnt
なお、終了する場合には、次のように入力する。
pi@raspberrypi ~ $ vncserver -kill :1 Killing Xtightvnc process ID 1234
3:VNCサーバーの自動起動の設定を行う。
pi@raspberrypi ~ $ sudo vi /etc/init.d/vncboot
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
|
[補講]シェルスクリプトはhttps://www.raspberrypi.org/documentation/remote-access/vnc/を参考。 ◇
pi@raspberrypi ~ $ sudo chmod 755 /etc/init.d/vncboot pi@raspberrypi ~ $ sudo update-rc.d vncboot defaults
[補講]次のような警告が表示された場合は、スクリプト内で「#! /bin/sh」が最初に書いてないという意味である。
insserv: warning: script 'K01vncboot' missing LSB tags and overrides insserv: warning: script 'vncboot' missing LSB tags and overrides
あくまで警告なので問題ありませんが、気になる場合は修正する。 ◇
pi@raspberrypi ~ $ sudo reboot
4:再起動後に、先ほどのpsコマンドでVNCサーバーが自動起動していることを確認する。
pi@raspberrypi ~ $ ps -ef | grep tightvnc | grep -v grep pi 701 1 0 13:23 ? 00:00:00 Xtightvnc :1 -desktop X -auth /home/pi/.Xauthority -geometry 1280x720 -depth 24 -rfbwait 120000 -rfbauth /home/pi/.vnc/passwd -rfbport 5901 -fp /usr/share/fonts/X11/misc/,/usr/share/fonts/X11/Type1/,/usr/share/fonts/X11/75dpi/,/usr/share/fonts/X11/100dpi/ -co /etc/X11/rgb
[補講]次のサイトを参考にした。
◇
5:RealVNCの公式サイトからインストーラーをダウンロードして、インストールする。
クライアント起動後、VNC Server欄に「[IPアドレス]::[ポート番号]」を入力する。ここでは「192.168.1.188::5901」とする。
PasswordにVNC Serverで設定したパスワードを入力すると、Raspberry Piの画面が表示される。
リモートデスクトップはクライアント側で解像度や色数を変更することができるので、VNCより便利な場合がある。また、VNCだとScratchやsudo idleが動かない場合がありますが、リモートデスクトップであれば普通に動く。
1:xrdpをインストールする。
pi@raspberrypi ~ $ sudo apt-get update pi@raspberrypi ~ $ sudo apt-get install xrdp
2:日本語キーボードを利用している場合は、設定ファイルを追加する必要がある。ファイルは、xrdpユーザ会のサイトからダウンロードする。
pi@raspberrypi ~ $ cd /etc/xrdp pi@raspberrypi /etc/xrdp $ sudo wget http://w.vmeta.jp/temp/km-0411.ini pi@raspberrypi /etc/xrdp $ sudo ln -s km-0411.ini km-e0010411.ini pi@raspberrypi /etc/xrdp $ sudo ln -s km-0411.ini km-e0200411.ini pi@raspberrypi /etc/xrdp $ sudo ln -s km-0411.ini km-e0210411.ini
3:xrdpサービスを起動する。
pi@raspberrypi /etc/xrdp $ sudo service xrdp restart
以上で、Raspberry Pi側の作業は終了である。
4:Windowsの「リモートデスクトップ接続」を起動する。
接続先にRaspberry PiのIPアドレスを入力する。
次のような画面が表示されるので、IDとパスワードを入力する。Moduleはそのままで問題なし。
しばらく経つとRaspberry Piの画面が表示される。sudo idleを実行できることを確認できた。
Raspberry PiにSambaをインストールすることで、Windowsとファイル共有ができる。
共有フォルダにアクセスする際に認証なしであれば、Sambaだけインストールすればよい。認証ありにするのであれば、Sambaに加えてsamba-common-binをインストールする。なぜならば、パスワードの設定用のsmbpasswdのパッケージがsamba-common-binに分かれたからである。
ここでは認証ありのファイル共有を実現する方法を解説する。
1:Raspberry Piにsambaとsamba-common-binをインストールする。
pi@raspberrypi ~ $ sudo apt-get update pi@raspberrypi ~ $ sudo apt-get install samba samba-common-bin
Sambaをインストールすると自動的にサービスに登録される。次のコマンドで確認できる。
pi@raspberrypi ~ $ service --status-all …(中略)… [ + ] rsyslog [ + ] samba [ + ] samba-ad-dc [ - ] sendsigs …(中略)…
2:Sambaの設定ファイルである"smb.conf"ファイルを編集する。
pi@raspberrypi ~ $ cd /etc/samba pi@raspberrypi /etc/samba $ sudo cp -pi smb.conf smb.conf.org pi@raspberrypi /etc/samba$ sudo vi smb.conf
次の内容を"smb.conf"ファイルに追加する。これは"/home/pi"ディレクトリと"/share"ディレクトリを共有フォルダとして指定する。認証ありなので"guest ok = no"としているが、パスワードなしにする場合は"guest ok = yes"とすればよい。
1 2 3 4 5 6 7 8 9 10 |
|
[補講]次のコマンドで"/share"ディレクトリを作成しておいた。
pi@raspberrypi / $ sudo mkdir /share pi@raspberrypi / $ sudo chown pi:pi /share pi@raspberrypi / $ sudo chmod 777 /share
◇
3:共有フォルダにアクセスする際のパスワードの設定を行う。
pi@raspberrypi ~ $ sudo smbpasswd -a pi New SMB password: Retype new SMB password: Added user pi.
4:Sambaを再起動すれば、設定完了である。
pi@raspberrypi ~ $ sudo service samba restart
[補講]"Failed to restart samba.service: Unit samba.service is masked."と表示された場合は、rebootする。 ◇
5:Windowsのエクスプローラのアドレスバーに「\\xxx.xxx.xxx.xxx」と指定すると、認証ダイアログが表示される。認証に成功すると"/home/pi"ディレクトリにアクセスできる。
セルフパワーのUSBハブを接続すれば、USBのポートを増やせる。
Raspberry Piに普通のUSBキーボードとマウスを接続するのが一番安価かつ手間がかからない。しかし、Raspberry Pi周りの配線がごちゃごちゃし、キーボードとマウスのためのスペースを確保しなければならない。Raspberry Pi周りをよりすっきりさせたかったので、タッチパッド内蔵のミニキーボードであるEWinのEW-RB05を導入した。 EW-RB05の特徴は次の通りである。
EW-RB05はUSB無線にも対応しているが、せっかくなのでBluetoothで接続してみる。
ここで使用するBluetoothのUSBアダプタ(以降Bluetoothドングルと呼ぶ)はPLANEXのBT-Micro4である。
1:BluetoothドングルをRaspberry Piに装着する前に、BlutoothのプロトコルスタックBlueZをインストールする。
pi@raspberrypi ~ $ sudo aptitude install bluez
[補講]RaspberryPi のバージョン8(Jessie)から、bluez-utilsパッケージがなくなったのでbluez-simple-agent, bluez-test-device, bluez-test-inputなどのコマンドが使えなくなった。代わりにbluetoothctlコマンドを使う。 ◇
2:Bluetoothドングルを挿入してから、hciconfigコマンドで認識していることを確認する。
pi@raspberrypi ~ $ hciconfig hci0: Type: BR/EDR Bus: USB BD Address: 00:1B:DC:05:16:E4 ACL MTU: 310:10 SCO MTU: 64:8 UP RUNNING RX bytes:610 acl:0 sco:0 events:36 errors:0 TX bytes:942 acl:0 sco:0 commands:36 errors:0
BluetoothドングルのMACアドレスが「BD Address」部に表示されていれば、認識している。 lsusbコマンドでUSB機器を列挙して確認することもできる。
pi@raspberrypi ~ $ lsusb Bus 001 Device 006: ID 2019:ab2a PLANEX GW-USNano2 802.11n Wireless Adapter [Realtek RTL8188CUS] Bus 001 Device 007: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode) Bus 001 Device 005: ID 046d:c00e Logitech, Inc. M-BJ58/M-BJ69 Optical Wheel Mouse Bus 001 Device 004: ID 1a81:2004 Holtek Semiconductor, Inc. Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
3:CUIでBluetoothのペアリングを行う場合を解説する。
Bluetoothデバイスをペアリングモード(検出可能状態)にしてから、hcitoolコマンドを実行して接続するデバイスをスキャンする*1。
ここではbluetoothctlコマンドでペアリングの設定を行うので、bluetoothctlの対話コマンドからスキャンする。
pi@raspberrypi ~ $ sudo bluetoothctl -a [NEW] Controller 00:1B:DC:05:16:E4 raspberrypi [default] Agent registered [bluetooth]# scan on Discovery started [CHG] Controller 00:1B:DC:05:16:E4 Discovering: yes [NEW] Device CC:C5:0A:1F:30:C9 CC-C5-0A-1F-30-C9
検知すると「NEW」が表示され、対象のデバイスのMACアドレスが表示される。
[補講]「scan on」実行時に"Failed to start discovery: org.bluez.Error.NotReady"というエラーが表示される場合は、hci0デバイスがDOWN状態になっている。次のコマンドでUP状態にする。
pi@raspberrypi ~ $ sudo hciconfig hci0 up
◇
[補講]hcitoolコマンドでもBluetoothデバイスをスキャンできる。
pi@raspberrypi ~ $ hcitool scan Scanning ... CC:C5:0A:1F:30:C9 Bluetooth 3.0 Macro Keyboard
Bluetoothデバイスを検出したらMACアドレスと名称が対で表示される。 ◇
4:bluetoothctlの対話コマンドのまま、対象のデバイスに接続してから、ペアリングの設定を行う。
[bluetooth]# connect CC:C5:0A:1F:30:C9 ←接続開始 Attempting to connect to CC:C5:0A:1F:30:C9 [CHG] Device CC:C5:0A:1F:30:C9 Connected: yes [CHG] Device CC:C5:0A:1F:30:C9 Modalias: usb:v05ACp0257d011B [CHG] Device CC:C5:0A:1F:30:C9 UUIDs: 00001000-0000-1000-8000-00805f9b34fb 00001124-0000-1000-8000-00805f9b34fb 00001200-0000-1000-8000-00805f9b34fb Connection successful ←接続成功 [bluetooth]# pair CC:C5:0A:1F:30:C9 ←ペアリング開始 Attempting to pair with CC:C5:0A:1F:30:C9 [agent] PIN code: 527887 ←PINコード [CHG] Device CC:C5:0A:1F:30:C9 Paired: yes ←上記のPINコード+Enterをキーボード側で入力すると表示される。 Pairing successful ←ペアリング成功
[補講]デバイス側(キーボード以外の機器など)でPINコードが内場合はtrustコマンドを使う。
[bluetooth]# trust [対象デバイスのMACアドレス]
◇
これでBluetoothキーボードとパッドが動作することが確認できた。
trustコマンドを実行する。これをしないと、対話コマンドから抜けると、Bluetoothキーボードとの接続が切れる?
[bluetooth]# trust CC:C5:0A:1F:30:C9 [CHG] Device CC:C5:0A:1F:30:C9 Trusted: yes Changing CC:C5:0A:1F:30:C9 trust succeeded [bluetooth]# quit Agent unregistered [DEL] Controller 00:1B:DC:05:16:E4 raspberrypi [default] pi@raspberrypi ~ $
5:これでペアリングが完了したが、このままではOSの起動時に毎回手動で接続する必要がある。そこで、自動接続の設定を行う。
udevルールのファイルを作成し、再起動後にもデバイスを有効にする。
pi@raspberrypi ~ $ cat /etc/udev/rules.d/10-local.rules # Set bluetooth power up ACTION=="add", KERNEL=="hci0", RUN+="/usr/bin/hciconfig hci0 up"
さらに、次のようなsystemdサービスを使うことで、サスペンド・復帰の後にデバイスの電源を自動的にオンにすることができる。
pi@raspberrypi ~ $ cat /etc/systemd/system/bluetooth-auto-power@.service [Unit] Description=Bluetooth auto power on After=bluetooth.service sys-subsystem-bluetooth-devices-%i.device suspend.target [Service] Type=oneshot #We could also do a 200 char long call to bluez via dbus. Except this does not work since bluez does not react to dbus at this point of the resume sequence and I do not know how I get this service to run at a time it does. So we just ignore bluez and force %i up using hciconfig. Welcome to the 21st century. #ExecStart=/usr/bin/dbus-send --system --type=method_call --dest=org.bluez /org/bluez/%I org.freedesktop.DBus.Properties.Set string:org.bluez.Adapter1 string:Powered variant:boolean:true ExecStart=/usr/bin/hciconfig %i up [Install] WantedBy=suspend.target
[参考]https://wiki.archlinuxjp.org/index.php/Bluetooth ◇
ショートカット | 動作 |
[Fn]+[F1] | バックライトON |
[Fn]+[Alt] | タッチパッド90度回転(リモコンのように縦持ちの操作が可能) |
[Shift]+[Alt] | 言語切り替え |
[Fn]+[Back] | Delete |
[Fn]+[F3] | ミュート |
[Fn]+[Ctrl] | Windowsキー |
[Fn]+[F2] | スクリーンショット |
[Fn]+[↑] | Page Up |
[Fn]+[↓] | Page Down |
EWINキーボードは小型でよいのだが、特殊なキー配列であるため、ブラインドタッチどころか使用頻度の多いキーを探すのも大変である。そこで、キーを見なくても触れただけでわかるように、キーに突起を付けることにした。
突起の候補として、最初に探したのがマルポコである。マルポコとは携帯電話をデコるための素材のひとつである。直径5mm、クリア(透明)、裏側の金膜なし(金膜があると下の文字が見えない)という条件で探したが、なかなか見つからなかった。
結局、希望のマルポコが入手できなかったので、クッションゴムで代用した。
東急ハンズでは一番小さいクッションゴムでも8mmであった。キーをほんの少しはみ出るが、隣のキーには当たらないため、これでよしとした。
クッションゴムの場合、完全な透明のタイプが少ないかもしれない。購入したものは3Mの「しっかりつくクッションゴム 22粒」である。シートに印字されている文字がクッションゴムを透けていることが観察できるため、これを購入した。
クッションゴムには粘着剤がついているが、EWINキーボードに貼り付くほどの強度はない。そこで、クリアパーツ向けの接着剤を探した。その際、素材を溶かさず、素材に適合した接着剤でなければならない。ここでは、120円ほどで販売されている「ボンド Gクリヤー 20ml #14321」を用いる。
使用したもの
[Tab], [Shift], [Ctrl], [BACK], [Enter], [F], [J], 矢印キーの中央にクッションゴムを取り付けた。[F]キーと[J]キーにはデフォルトで小さい突起があるが、すぐにわかるようにクッションゴムを取り付けた。
接着するときはキーからたれて隙間に落ちていかなように注意する。使用したGクリヤーはどろっとしたタイプなので、若干たれても隙間に入り込まなかった。
完成したEWINキーボード(上から見たところ)
完成したEWINキーボード(斜めから見たところ)
[参考]
◇
モバイルデータ通信を有効にしたスマホにおいて、(Bluetoothの)テザリングを起動する。
bluez-simple-agentコマンドでペアリングを行うと失敗する。
bluez-simple-agentはPythonスクリプトなのでテキストエディタで開き、「capability = "KeyboardDisplay"」を「capability = "DisplayYesNo"」に書き換える。次のコマンドで書き換えることもできる。
sudo perl -i -pe 's/KeyboardDisplay/DisplayYesNo/' /usr/bin/bluez-simple-agent
編集後ペアリングするとPINコードの代わりにYes/Noの選択が促される。Yesを入力するとパリングする。
正確な時刻が必要な場合は、NTPの時刻同期の設定を行う。
[補講]インターネット上のNTPサーバーから時刻を受信して修正するntpdate(client)を用いるという選択肢もあるが、Raspberry Piではデフォルトでntpdが動いている。 ◇
Raspbianの初期設定、各種ソフトのインストールや設定が完了したら、バックアップをとっておくことをお勧めする。
1:空のイメージファイルを作成する。
エクスプローラ上のメニューの「ファイル」>「新規作成」>「テキストドキュメント」を選択する。ファイル名を"raspbian_backup.img"とする。拡張子を変更しているので、警告メッセージが表示されるが無視する。
2:バックアップ対象のRaspbianデータが入ったmicroSDカードをPCに接続する。
3:Win32 Disk Imager(公式サイト)を起動する。
[補講]Win32 Disk Imagerはイメージファイルを展開する際にも活用できる。 ◇
4:Win32 Disk Imagerの「Image File」にステップ1で作成した(空の)イメージファイルを指定する。
「Device」にステップ2でマウントしたmicroSDカードのドライブを指定する。
[Read]ボタンを押すと、microSDカードの内容が読み込まれ、指定したイメージファイルに書き込まれる。
[注意]指定するドライブ、ReadとWriteを間違えないようにする。 ◇
5:書き込み処理が終了したら、「Read Successful.」とダイアログが表示され、ウィンドウの下部には「Done.」を表示される。
エクスプローラ上でイメージファイルの容量が増えていることを確認する。
1:ターミナルを起動する。カレントディレクトリは"/Applications/Utilities"に位置する。
2:次のように入力すると、接続しているストレージデバイスが列挙される。
$ diskutil list
バックアップ対象のSDカードのデバイス名を調べる。HDDと間違えないように、SDカードを挿す前の出力結果と挿した後の出力結果を比較して、判断すると確実である。ここでは"disk1"であったとする。
[補講]システム情報やdfコマンドで調べてもよい。 ◇
3:ddコマンドでバックアップを行う。
$ sudo dd bs=1m if=/dev/disk1 of=/Users/[ユーザー名]/Desktop/backup.img ←バックアップ $ sudo dd if=/dev/rdisk1 bs=4m | gzip > ~/Desktop/backup.img.gz ←バックアップしつつ圧縮
$ sudo lsblk -f $ sudo dd if=/dev/sdb bs=4M | gzip > ~/backup.img.gz
1:SDフォーマッター(SD Formatter)を起動する。オプションで、消去方法を「イレースフォーマット、論理サイズ調整を「ON」にして、SDカードをクイックフォーマットする。
[補講]Windos版のSDFormatterはここ。 ◇
2:Win32 Disk Imagerでバックアップファイル(イメージファイル)を指定して、[Write]ボタンを押す。すると、microSDカードにバックアップしたデータが書き込まれる。
3:復元したRaspbianはバックアップを取った時点から更新されていない。Raspberry Piを起動してから、次のコマンドを実行して最新の状態にする。
pi@raspberrypi ~ $ sudo apt-get update pi@raspberrypi ~ $ sudo apt-get upgrade pi@raspberrypi ~ $ sudo rpi-update
1:書き込みしたいSDカードを挿入して、次のコマンドでいったんアンマウントする。
$ diskutil unmountdisk disk1
1:ターミナルで、次のオプションを指定して、ddコマンドを実行する。
$ sudo dd bs=1m if=/Users/[ユーザー名]/Desktop/backup.img of=/dev/rdisk1
$ gzip -dc ~/Desktop/backup.img.gz | sudo dd bs=1m of=/dev/rdisk1
[補講]「of=/dev/disk1」のように「r」を付けなくても書き出すことはできるが、とても処理が重くなる。「r」を付けると、アンバッファモードになって速度が速くなる。 ◇
3:次のコマンドでアンマウントしてから、SDカードを取り出す。
$ diskutil eject /dev/disk1
$ gzip -dc ~/backup.img.gz | sudo dd of=/dev/sdb bs=4M
pi@raspberrypi ~ $ python2 --version Python 2.7.9 pi@raspberrypi ~ $ python3 --version Python 3.4.2
Pythonスクリプトを直接実行するのであれば、"python2 hoge.py"や"python3 hoge.py"と実行すればよい。しかし、そうではない場合には、pythonコマンドで起動するPythonのバージョンをあらかじめ変更しておかないと問題が生じることがある。 ここでは、update-alternativesで切り替えることができる仕組みを導入する。
1:Pythonのシンボリックリンクをバックアップしておく。
pi@raspberrypi ~ $ sudo mv /usr/bin/python /usr/bin/python.bak sudo mv /usr/bin/python /usr/bin/python.bak
2:各Pythonに優先度を指定する。
pi@raspberrypi ~ $ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2 update-alternatives: /usr/bin/python (python) を提供するために自動モードで /usr/bin/python2.7 を使います pi@raspberrypi ~ $ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.4 1
これで設定完了。
pi@raspberrypi ~/python_program $ python -V Python 2.7.9
ここでは2.7になっている。3.4に切り替えたい場合は次のコマンドを入力する。
pi@raspberrypi ~ $ sudo update-alternatives --config python alternative python (/usr/bin/python を提供) には 2 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------ * 0 /usr/bin/python2.7 2 自動モード 1 /usr/bin/python2.7 2 手動モード 2 /usr/bin/python3.4 1 手動モード 現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください: 2 ←2を入力してEnter. update-alternatives: /usr/bin/python (python) を提供するためにマニュアルモードで /usr/bin/python3.4 を使います pi@raspberrypi ~ $ python -V Python 3.4.2
[補講]Python3のまま、apt-getをしたところエラーになることがある。
↓python-picameraのアップグレードでエラーになった例
pi@raspberrypi /var/lib/dpkg/info $ sudo apt-get upgrade パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 アップグレードパッケージを検出しています ... 完了 以下のパッケージは保留されます: libraspberrypi-bin libraspberrypi-dev libraspberrypi-doc libraspberrypi0 lxpanel lxpanel-data nuscratch pypy-upstream raspberrypi-bootloader raspberrypi-ui-mods 以下のパッケージはアップグレードされます: python-picamera アップグレード: 1 個、新規インストール: 0 個、削除: 0 個、保留: 10 個。 2 個のパッケージが完全にインストールまたは削除されていません。 120 kB 中 0 B のアーカイブを取得する必要があります。 この操作後に追加で 58.4 kB のディスク容量が消費されます。 続行しますか? [Y/n] y (データベースを読み込んでいます ... 現在 145225 個のファイルとディレクトリがインストールされています。) .../python-picamera_1.11_armhf.deb を展開する準備をしています ... File "/usr/bin/pyclean", line 63 except (IOError, OSError), e: ^ SyntaxError: invalid syntax dpkg: 警告: サブプロセス 古い pre-removal スクリプト はエラー終了ステータス 1 を返しました dpkg: 代わりに新規パッケージからスクリプトを実行してみます ... File "/usr/bin/pyclean", line 63 except (IOError, OSError), e: ^ SyntaxError: invalid syntax dpkg: アーカイブ /var/cache/apt/archives/python-picamera_1.11_armhf.deb の処理中にエラーが発生しました (--unpack): サブプロセス 新しい pre-removal スクリプト はエラー終了ステータス 1 を返しまし た Traceback (most recent call last): File "/usr/bin/pycompile", line 35, in <module> from debpython.version import SUPPORTED, debsorted, vrepr, \ File "/usr/share/python/debpython/version.py", line 24, in <module> from ConfigParser import SafeConfigParser ImportError: No module named 'ConfigParser' dpkg: クリーンアップ中にエラーが発生しました: サブプロセス インストール済みの post-installation スクリプト はエラー終了ステータス 1 を返しました 処理中にエラーが発生しました: /var/cache/apt/archives/python-picamera_1.11_armhf.deb E: Sub-process /usr/bin/dpkg returned an error code (1)
その際には、Python2に戻しておいてから、実行する。
★後ほど更新予定
★後ほど更新予定
★後ほど更新予定
★後ほど更新予定
1:PRi.GPIOライブラリをアップデートする。
pi@raspberrypi ~ $ sudo apt-get update pi@raspberrypi ~ $ sudo apt-get upgrade
すでに実行したばかりであればこのステップは不要。
2:Pythonライブラリのパッケージ管理ソフトpipをインストールする。
pi@raspberrypi ~ $ sudo apt-get install python-dev pi@raspberrypi ~ $ sudo apt-get install python-pip
次のコマンドを実行してpipのバージョンを確認する。
pi@raspberrypi ~ $ pip --version
バージョンをアップデートするには次のコマンドを実行する。
pi@raspberrypi ~ $ sudo pip install --upgrade pip
3:LXTerminalを起動し直してから、pipのバージョンを確認する。
pi@raspberrypi ~ $ pip --version
GPIO端子を制御する場合には管理者権限が必要である。PythonプログラムからGPIO端子を制御する場合も同様なので、Pythonプログラムを管理者権限で実行しなければならない。そこで、開発環境であるPython 2のIDEを管理者権限で実行する。
もっとも簡単な方法はLXTerminalから次のコマンドを実行する方法である。
pi@raspberrypi ~ $ sudo idle
また、GUIで操作したい場合には、管理者権限でIDEを起動するショートカットアイコンを作成する。
1:「Menu」>「プログラミング」>「Python 2」>「デスクトップに追加」を選択する。
2:デスクトップに作成された「Python2(IDLE)」を右クリックして、「アプリケーションで開く」を選択する。
そして、「Text Editor」を選択する*2。
3:"idle.desktop"がText Editorで開くので、2行目と5行目を編集する。
編集前
編集後
編集後に、"idle_gpio.desktop"という名前を付けて保存する。すると、デスクトップにアイコンが作成される。
[補講]VNCで表示した画面で管理者権限で処理を実行しようとするとエラーが出る。
VNCの画面で"suto idle"を実行したところ
そのためSSHでリモート操作するか、直接Raspberry Piの画面を操作する必要がある。 ◇
dfコマンドで容量を調べると100%になっていました。
pi@raspberrypi ~ $ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/root 3.9G 3.7G 0 100% / devtmpfs 459M 0 459M 0% /dev tmpfs 463M 0 463M 0% /dev/shm tmpfs 463M 6.4M 457M 2% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 463M 0 463M 0% /sys/fs/cgroup /dev/mmcblk0p1 56M 20M 37M 36% /boot tmpfs 93M 0 93M 0% /run/user/1000
キャッシュを削除すると、若干空き容量ができた。
pi@raspberrypi ~ $ sudo apt-get clean pi@raspberrypi ~ $ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/root 3.9G 3.4G 317M 92% / devtmpfs 459M 0 459M 0% /dev tmpfs 463M 0 463M 0% /dev/shm tmpfs 463M 6.4M 457M 2% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 463M 0 463M 0% /sys/fs/cgroup /dev/mmcblk0p1 56M 20M 37M 36% /boot tmpfs 93M 0 93M 0% /run/user/1000
設定画面からファイルシステムを拡大すると改善するらしいので、試した。
1:raspi-configコマンドで設定画面を表示する。
$ sudo raspi-config
2:「1. Expand Filesystem」を選択する。後は自動的に処理される。
処理の終了後、「rootパーティションがリサイズされたので次に再起動する」というメッセージが表示される。
3:設定画面の「終了」(Finish)を選択すると、再起動するかを聞かれるので、了解する。
4:再起動後に改めてdfコマンドで容量を確認する。"/dev/root"の容量が3.9Gバイトから7.2Gバイトに拡大し、空き容量が大幅に改善した。
pi@raspberrypi ~ $ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/root 7.2G 3.4G 3.6G 49% / devtmpfs 459M 0 459M 0% /dev tmpfs 463M 0 463M 0% /dev/shm tmpfs 463M 6.4M 457M 2% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 463M 0 463M 0% /sys/fs/cgroup /dev/mmcblk0p1 56M 20M 37M 36% /boot tmpfs 93M 0 93M 0% /run/user/1000
microSDの空き容量が少ないため、8GBから32GBに変更したいとする。相性の問題があるので、microSDの購入時はRPi SD cardsを参考にする。
1:現在のmicroSDのイメージをバックアップする。DDWinを使用する。
[補講]バックアップと復元で解説した内容と同様に、Win32DiskImagerでうまくいくと思ったが、Raspberry Pi起動後にWiFiが使えないという変な現象が起きた(すでにこれまで使用できていたWiFiドングル)。
pi@raspberrypi ~ $ ip addr show wlan0 Device "wlan0" does not exist. ←wlan0が見つからない。 pi@raspberrypi ~ $ iwconfig lo no wireless extensions. eth0 no wireless extensions. pi@raspberrypi ~ $ lsusb Bus 001 Device 005: ID 2019:ab2a PLANEX GW-USNano2 802.11n Wireless Adapter [Realtek RTL8188CUS] ←ドングルは見えている。 Bus 001 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode) Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub pi@raspberrypi ~ $ lsmod Module Size Used by evdev 10278 2 joydev 9024 0 hid_apple 4677 0 hidp 13318 1 bnep 10336 2 cfg80211 407580 0 btusb 28640 0 btintel 1332 1 btusb btbcm 4196 1 btusb bluetooth 317981 28 bnep,hidp,btbcm,btusb,btintel rfkill 16036 3 cfg80211,bluetooth snd_bcm2835 19802 6 bcm2835_rng 1763 0 snd_pcm 73474 1 snd_bcm2835 i2c_bcm2708 4920 0 spi_bcm2835 7074 0 snd_timer 18848 1 snd_pcm bcm2835_gpiomem 2860 0 snd 50779 15 snd_bcm2835,snd_timer,snd_pcm uio_pdrv_genirq 2944 0 uio 7753 1 uio_pdrv_genirq i2c_dev 5671 0 fuse 80694 5 ipv6 338660 34
◇
2:DDWinを使って、バックアップしたイメージを変更先のmicroSDカードに書き込む。
3:新しいmicroSDカードを挿入して、Raspberry Piを起動する。
起動時に今まで見たことがないメッセージがたくさん表示されるかもしれない。
4:duコマンドで確認すると、/dev/rootの空き容量はひっ迫したままである。そこで、raspi-configで「1 Expand Filesystem」を選び、ルートパーティションを拡張する。再起動してから、duコマンドで再び確認すると、/dev/rootの空き容量が大きくなっているはずである。
以上の方法で、8GB→32GB(Samsung MB-MC32DA/FFP)に移行できました。
[補講]NOOBSを使っていると、Expand Filesystemが失敗するようだ。対処方法は次のサイトを参考。
◇
[補講]起動しない場合には、microSDの相性との問題の可能性がある。素直に動作確認が取れているmicroSDで試した方がよい。 ◇
[補講]その他参考になるサイトを紹介する。
◇