いつまでも有線LANだとLANケーブルが邪魔で仕方ないのでWi-Fiに繋がるように設定します。

今回使用した無線LAN USBアダプタは「PLANEX 無線LAN子機 (USBアダプター型)」です。

 

2016-03-15 13.52.38

例によってAmazonで買いました。

 

2016-03-15 13.56.43

こいつをとりあえずラズパイに挿します。LANケーブルはまだ抜かないで下さい。

lsusb を打ってPLANEXが表示されればOKです。

$ lsusb
Bus 001 Device 006: ID 2019:ab2a PLANEX GW-USNano2 802.11n Wireless Adapter [Realtek RTL8188CUS]
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

 

SSIDやパスフレーズの設定

Wi-Fiの設定は /etc/wpa_supplicant/wpa_supplicant.conf というファイルに記載します。編集前は以下のような状態。

$ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

 

wpa_passphrase コマンドで暗号化したパスフレーズを作成します。下記コマンドで設定ファイルに直接追記可能です。

(SSIDとPASSPHRASEはお使いの環境に合わせて下さい。)

$ sudo sh -c 'wpa_passphrase SSID PASSPHRASE >> /etc/wpa_supplicant/wpa_supplicant.conf'

 

再度 wpa_supplicant.conf を見るとSSIDとパスフレーズが追記されています。生のパスフレーズがコメントアウトされている行があるので、気になる方は消したほうが良いでしょう。

$ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
	ssid="Your_SSID"
	#psk="Your_Passphrase"
	psk=hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge
}

 

設定を反映します。

$ sudo /etc/init.d/networking restart
[ ok ] Restarting networking (via systemctl): networking.service.

 

ifconfig で確認。しかし認識されていないっぽい?(wlan0 という項目が表示される予定だった)

$ ifconfig
eth0      Link encap:イーサネット  ハードウェアアドレス b8:27:eb:a3:58:0a 
 :

lo        Link encap:ローカルループバック  
 :

 

とりあえずラズパイを再起動して再度 ifconfig。

$ ifconfig
 :
wlan0     Link encap:イーサネット  ハードウェアアドレス 00:22:cf:fa:84:5f 
          inetアドレス:10.0.1.18 ブロードキャスト:10.0.1.255  マスク:255.255.255.0
          inet6アドレス: fe80::29da:c3ab:33bf:23d7/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:176 エラー:0 損失:48 オーバラン:0 フレーム:0
          TXパケット:47 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:1000 
          RXバイト:33796 (33.0 KiB)  TXバイト:8662 (8.4 KiB)

設定が反映されていました。「inetアドレス:10.0.1.18」と書いてあるので、一旦SSHをログアウトして 10.0.1.18にSSHしてみます。

$ ssh pi@10.0.1.18
The authenticity of host '10.0.1.18 (10.0.1.18)' can't be established.
 :
Last login: Thu Mar 17 10:18:11 2016 from 10.0.1.105
pi@raspberrypi:~ $

ログインできました。Wi-FiでログインするとUSBアダプタが赤く光りました。

2016-03-17 10.29.11

 

Raspberry PiのIPアドレスを固定にする

2016年3月17日時点での最新のRaspbian(Jessie)では /etc/dhcpcd.conf を編集して固定IPを設定できます。/etc/dhcpcd.conf の末尾に以下を追記します。

interface wlan0
static ip_address=10.0.1.10/24 ← Raspberry PiのIPアドレス
static routers=10.0.1.1 ← デフォルトゲートウェイ
static domain_name_servers=10.0.1.1 ← DNSサーバーのIPアドレス

 

デフォルトゲートウェイとかよくわかんないですが、きっとルーターのIPにしとけばOKだよね?

Macの人はoptionキーを押しながらステータスバーのWi-Fiアイコンをクリックしたら詳細が見れます。

スクリーンショット 2016-03-17 10.19.35

 

設定を反映します。

$ sudo service dhcpcd reload

 

LANケーブルを抜いてラズパイを再起動して、再度SSHログインしてみます。

$ ssh pi@10.0.1.10
pi@10.0.1.10's password: 

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.
Last login: Thu Mar 17 10:17:13 2016
pi@raspberrypi:~ $ 

ログインできました!LANケーブルが無くなって大分すっきりしました\(^o^)/

2016-03-17 11.13.16

 

参考記事:

ディスクイメージを作成する

SDカードをMacに挿して diskutil list でSDカードのマウント位置を確認します。

$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:          Apple_CoreStorage                         999.3 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:          Apple_CoreStorage                         121.0 GB   disk1s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk1s3
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           *1.1 TB     disk2
                                 Logical Volume on disk1s2, disk0s2
                                 F1AA4393-D567-4B20-A37D-E2F949D8A0E7
                                 Unencrypted Fusion Drive
/dev/disk3
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *8.0 GB     disk3
   1:             Windows_FAT_32 boot                    62.9 MB    disk3s1
   2:                      Linux                         8.0 GB     disk3s2

上記の例では /dev/disk3 がSDカードです。

 

次にddコマンドでSDカードのディスクイメージを作成しMacに保存します。of に出力先のパスを指定してください。

$ sudo dd if=/dev/disk3 of=~/Downloads/RaspbianBackup_20160316.dmg
Password:
15677440+0 records in
15677440+0 records out
8026849280 bytes transferred in 1204.370778 secs (6664766 bytes/sec)

8GBで約20分ほど掛かりました。バックアップはこれで完了です。

 

バックアップから復元する

次はバックアップから復元する方法です。先ほどと同じように diskutil list でSDカードのマウント位置を確認します。

$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:          Apple_CoreStorage                         999.3 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:          Apple_CoreStorage                         121.0 GB   disk1s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk1s3
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           *1.1 TB     disk2
                                 Logical Volume on disk1s2, disk0s2
                                 F1AA4393-D567-4B20-A37D-E2F949D8A0E7
                                 Unencrypted Fusion Drive
/dev/disk3
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *16.1 GB    disk3
   1:             Windows_FAT_32 NO NAME                 16.1 GB    disk3s1

 

次にSDカードをアンマウントします。

$ diskutil unmountDisk /dev/disk3
Unmount of all volumes on disk3 was successful

 

ddコマンドでバックアップのディスクイメージをSDカードに書き込みます。if と of の指定はバックアップを作成した時とは逆になります。

$ sudo dd if=~/Downloads/RaspbianBackup_20160316.dmg of=/dev/disk3
Password:
15677440+0 records in
15677440+0 records out
8026849280 bytes transferred in 6703.339486 secs (1197440 bytes/sec)

2時間弱掛かりました。かかりすぎじゃね?なんで?

→/dev/rdisk3 にしなかったからかも

 

書き込みが完了したらエジェクトします。

$ sudo diskutil eject /dev/rdisk3
Password:
Disk /dev/rdisk3 ejected

 

以上でバックアップからの復元は完了です。

 

復元に使ったSDカードをラズパイに挿して df -h してみます。

$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/root        7.3G  3.5G  3.5G   51% /
devtmpfs         459M     0  459M    0% /dev
tmpfs            463M     0  463M    0% /dev/shm
tmpfs            463M  6.3M  457M    2% /run
tmpfs            5.0M  4.0K  5.0M    1% /run/lock
tmpfs            463M     0  463M    0% /sys/fs/cgroup
/dev/mmcblk0p1    60M   20M   41M   34% /boot
tmpfs             93M     0   93M    0% /run/user/1000

8GBのSDカードのイメージから16GBのSDカードに移したのですが、7.3GBしか認識されていないみたいです。とりあえず raspi-config の Expand Filesystem をやってみました。

$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/root        7.3G  3.6G  3.4G   52% /
devtmpfs         459M     0  459M    0% /dev
tmpfs            463M     0  463M    0% /dev/shm
tmpfs            463M  6.3M  457M    2% /run
tmpfs            5.0M  4.0K  5.0M    1% /run/lock
tmpfs            463M     0  463M    0% /sys/fs/cgroup
/dev/mmcblk0p1    60M   20M   41M   34% /boot
tmpfs             93M     0   93M    0% /run/user/1000

変わらない!なんで?分かる人いたら教えて下さい!

続き:Raspberry Pi 入門 6日目 – Raspberry Pi 2 Model B をWi-Fiに接続する&IPアドレスを固定する

 

参考記事:Backing up and Restoring your Raspberry Pi’s SD Card – The Pi Hut

前回の続きです。前回はRaspberry PiとPaSoRiを繋げてSuicaのIDmを取得しました。今回はSuicaの履歴を読み取ります。

 

Felicaの「ブロック」について

FeliCaには暗号化された領域と暗号化されていない領域があります。われわれ一般ピーポーが勝手にアクセスできるのは暗号化されていない領域だけです。

Suicaでは暗号化されていない領域に直近20件の履歴が記録されています。各履歴レコードは「ブロック」と呼ばれ、1ブロック=1履歴です。この暗号化されていない領域からブロックを読み取る命令を「Read Without Encryption」といいます。(詳細はSonyのFelicaカード ユーザーズマニュアルをご覧ください)

 

Pythonでブロックを読み取る

前回使用したPython用NFCライブラリ「nfcpy」を今回も使用します。まず最初にソースコード全体をお見せします。

<説明>

7行目で nfcpy をダウンロードしたディレクトリを指定してパスに追加しています。そして8行目でimportしています。

10行目で宣言している service_code = 0x090f はSuica内の乗降履歴情報のサービスコードです。これはこういうものだと覚えておきましょう。

26行目でPaSoRiとの接続を開始して、on-connect で12行目〜の connected が呼ばれます。

17行目でサービスコード(0x090f)を read_without_encryption メソッドに渡すためのServiceCodeクラスインスタンスに変換しています。

18行目は読み込むブロックの番号を指定するのですが、今回は0番(1ブロック目)を指定しています。

そして19行目でRead Without Encryptionコマンドを発行し、結果を表示しています。

実行結果はこんな感じ。

$ sudo python felica.py 
Type3Tag 'FeliCa Standard (RC-S???)' ID=011203123412A30B PMM=100B4B428485D0FF SYS=0003
block: c8460000206b4cc049f907120007e000

現状では読み取ったブロックを16進数文字列で表示しているだけなので、これを更にパースしてあげる必要があります。

 

ブロックをパースする

ここでは詳細についての説明はしませんが、ブロック内の何バイト目が何を意味するかというのは有志により解析されています。(suica – FeliCa Library Wiki – FeliCa Library – OSDN

これにしたがってパースする処理を追加したのがm2wasabiさんがGithub(https://github.com/m2wasabi/nfcpy-suica-sample)で公開している以下のコードです。駅コードから駅名を表示するために StationCode.csv というCSVファイルを同じディレクトリに置いています。

 

このスクリプトを実行すると以下のような結果が表示されます。

$ sudo python suica_read.py 
Type3Tag 'FeliCa Standard (RC-S???)' ID=011203123412A30B PMM=100B4B428485D0FF SYS=0003
=== 00 ===
端末種: 自販機
処理: 物販
日付: 16-03-11
入線区: None-None
入駅順: None
出線区: None-None
出駅順: None
残高: 4615
BIN: 
c8 46 00 00 20 6b 4c c0 49 f9 07 12 00 07 e0 00 
=== 01 ===
端末種: None
処理: 物販
日付: 16-03-10
入線区: None-None
入駅順: None
出線区: None-None
出駅順: None
残高: 5015
BIN: 
c7 46 00 00 20 6a b7 45 df e9 97 13 00 07 df 00 
=== 02 ===
端末種: 改札機
処理: 運賃支払
日付: 16-03-10
入線区: 東日本旅客鉄道-東海道本
入駅順: 浜松町
出線区: 東日本旅客鉄道-山手
出駅順: 池袋
残高: 5632
BIN: 
16 01 00 02 20 6a 01 04 25 0f 00 16 00 07 de 00 
  :

 

日付や駅名等が表示されましたね。

続き:Raspberry Pi 入門 5日目 – Raspberry PiのSDカードのバックアップを作成する(Mac OS Xの場合)

 

 

 

参考記事:

ラズパイにFeliCaカードリーダーを繋げてSuicaのIDmという識別子を読み取ってみます。ラズパイにSSHでログインしている状態から始めます。言語はPythonを使用します。

FeliCaカードリーダーはPaSoRi RC-S380を使用します。BluetoothではなくUSBで接続するタイプのやつです。

 

Raspberry Pi と PaSoRi を接続する

下図のようにラズパイのUSBポートにPaSoRiを接続します。

2016-03-07 12.05.12

 

この状態で lsusb コマンドを叩くとラズパイに接続されている機器の情報を見ることが出来ます。

$ lsusb
Bus 001 Device 004: ID 054c:06c3 Sony Corp. 
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

PaSoRiはSony製なので、Sony Corp. と表示されます。今回は一番上に表示されています。

 

PythonでSuicaのIDmを読み取る

PythonでNFCデバイスを制御するためのnfcpyというライブラリがあるので、今回はこれを使用します。

PythonはVer.2.7系のものがラズパイに初めから入っているので別途インストールする必要はありません。ということでnfcpyのインストールを行います。基本的に公式サイトの手順通りにコマンドを実行すれば問題ありません。

 

まずはbzrコマンドをインストールします。bzrはバージョン管理システムBazzarのコマンドラインツールです。

$ sudo apt-get install bzr
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  python-bzrlib python-configobj python-crypto python-gpgme python-httplib2 python-keyring python-launchpadlib python-lazr.restfulclient python-lazr.uri python-oauth python-secretstorage python-simplejson python-wadllib python-zope.interface
提案パッケージ:
  bzr-doc bzrtools python-bzrlib.tests python-bzrlib-dbg python-kerberos python-paramiko python-pycurl python-configobj-doc python-crypto-dbg python-crypto-doc gir1.2-gnomekeyring-1.0 python-fs python-gdata python-kde4 python-keyczar python-testresources gnome-keyring
  python-secretstorage-doc
以下のパッケージが新たにインストールされます:
  bzr python-bzrlib python-configobj python-crypto python-gpgme python-httplib2 python-keyring python-launchpadlib python-lazr.restfulclient python-lazr.uri python-oauth python-secretstorage python-simplejson python-wadllib python-zope.interface
アップグレード: 0 個、新規インストール: 15 個、削除: 0 個、保留: 0 個。
2,366 kB のアーカイブを取得する必要があります。
この操作後に追加で 13.1 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main python-configobj all 5.0.6-1 [35.3 kB]
取得:2 http://mirrordirector.raspbian.org/raspbian/ jessie/main python-bzrlib armhf 2.6.0+bzr6595-6 [1,579 kB]
取得:3 http://mirrordirector.raspbian.org/raspbian/ jessie/main bzr all 2.6.0+bzr6595-6 [53.9 kB]                                                                                                                                                                               
取得:4 http://mirrordirector.raspbian.org/raspbian/ jessie/main python-crypto armhf 2.6.1-5 [248 kB]                                                                                                                                                                            
取得:5 http://mirrordirector.raspbian.org/raspbian/ jessie/main python-gpgme armhf 0.3-1 [20.4 kB]                                                                                                                                                                              
取得:6 http://mirrordirector.raspbian.org/raspbian/ jessie/main python-httplib2 all 0.9+dfsg-2 [39.0 kB]                                                                                                                                                                        
取得:7 http://mirrordirector.raspbian.org/raspbian/ jessie/main python-keyring all 4.0-1 [56.9 kB]                                                                                                                                                                              
取得:8 http://mirrordirector.raspbian.org/raspbian/ jessie/main python-lazr.uri all 1.0.3-2 [13.7 kB]                                                                                                                                                                           
取得:9 http://mirrordirector.raspbian.org/raspbian/ jessie/main python-simplejson armhf 3.6.5-1 [65.0 kB]                                                                                                                                                                       
取得:10 http://mirrordirector.raspbian.org/raspbian/ jessie/main python-wadllib all 1.3.2-2 [34.3 kB]                                                                                                                                                                           
取得:11 http://mirrordirector.raspbian.org/raspbian/ jessie/main python-zope.interface armhf 4.1.1-3.1 [84.1 kB]                                                                                                                                                                
取得:12 http://mirrordirector.raspbian.org/raspbian/ jessie/main python-oauth all 1.0.1-4 [12.8 kB]                                                                                                                                                                             
取得:13 http://mirrordirector.raspbian.org/raspbian/ jessie/main python-lazr.restfulclient all 0.13.3-1 [59.6 kB]                                                                                                                                                               
取得:14 http://mirrordirector.raspbian.org/raspbian/ jessie/main python-launchpadlib all 1.10.2+ds-2 [51.6 kB]                                                                                                                                                                  
取得:15 http://mirrordirector.raspbian.org/raspbian/ jessie/main python-secretstorage all 2.1.1-1 [12.9 kB]                                                                                                                                                                     
2,366 kB を 40秒 で取得しました (58.8 kB/s)                                                                                                                                                                                                                                     
以前に未選択のパッケージ python-configobj を選択しています。
(データベースを読み込んでいます ... 現在 126040 個のファイルとディレクトリがインストールされています。)
.../python-configobj_5.0.6-1_all.deb を展開する準備をしています ...
python-configobj (5.0.6-1) を展開しています...
以前に未選択のパッケージ python-bzrlib を選択しています。
.../python-bzrlib_2.6.0+bzr6595-6_armhf.deb を展開する準備をしています ...
python-bzrlib (2.6.0+bzr6595-6) を展開しています...
以前に未選択のパッケージ bzr を選択しています。
.../bzr_2.6.0+bzr6595-6_all.deb を展開する準備をしています ...
bzr (2.6.0+bzr6595-6) を展開しています...
以前に未選択のパッケージ python-crypto を選択しています。
.../python-crypto_2.6.1-5_armhf.deb を展開する準備をしています ...
python-crypto (2.6.1-5) を展開しています...
以前に未選択のパッケージ python-gpgme を選択しています。
.../python-gpgme_0.3-1_armhf.deb を展開する準備をしています ...
python-gpgme (0.3-1) を展開しています...
以前に未選択のパッケージ python-httplib2 を選択しています。
.../python-httplib2_0.9+dfsg-2_all.deb を展開する準備をしています ...
python-httplib2 (0.9+dfsg-2) を展開しています...
以前に未選択のパッケージ python-keyring を選択しています。
.../python-keyring_4.0-1_all.deb を展開する準備をしています ...
python-keyring (4.0-1) を展開しています...
以前に未選択のパッケージ python-lazr.uri を選択しています。
.../python-lazr.uri_1.0.3-2_all.deb を展開する準備をしています ...
python-lazr.uri (1.0.3-2) を展開しています...
以前に未選択のパッケージ python-simplejson を選択しています。
.../python-simplejson_3.6.5-1_armhf.deb を展開する準備をしています ...
python-simplejson (3.6.5-1) を展開しています...
以前に未選択のパッケージ python-wadllib を選択しています。
.../python-wadllib_1.3.2-2_all.deb を展開する準備をしています ...
python-wadllib (1.3.2-2) を展開しています...
以前に未選択のパッケージ python-zope.interface を選択しています。
.../python-zope.interface_4.1.1-3.1_armhf.deb を展開する準備をしています ...
python-zope.interface (4.1.1-3.1) を展開しています...
以前に未選択のパッケージ python-oauth を選択しています。
.../python-oauth_1.0.1-4_all.deb を展開する準備をしています ...
python-oauth (1.0.1-4) を展開しています...
以前に未選択のパッケージ python-lazr.restfulclient を選択しています。
.../python-lazr.restfulclient_0.13.3-1_all.deb を展開する準備をしています ...
python-lazr.restfulclient (0.13.3-1) を展開しています...
以前に未選択のパッケージ python-launchpadlib を選択しています。
.../python-launchpadlib_1.10.2+ds-2_all.deb を展開する準備をしています ...
python-launchpadlib (1.10.2+ds-2) を展開しています...
以前に未選択のパッケージ python-secretstorage を選択しています。
.../python-secretstorage_2.1.1-1_all.deb を展開する準備をしています ...
python-secretstorage (2.1.1-1) を展開しています...
man-db (2.7.0.2-5) のトリガを処理しています ...
python-configobj (5.0.6-1) を設定しています ...
python-bzrlib (2.6.0+bzr6595-6) を設定しています ...
bzr (2.6.0+bzr6595-6) を設定しています ...
python-crypto (2.6.1-5) を設定しています ...
python-gpgme (0.3-1) を設定しています ...
python-httplib2 (0.9+dfsg-2) を設定しています ...
python-keyring (4.0-1) を設定しています ...
python-lazr.uri (1.0.3-2) を設定しています ...
python-simplejson (3.6.5-1) を設定しています ...
python-wadllib (1.3.2-2) を設定しています ...
python-zope.interface (4.1.1-3.1) を設定しています ...
python-oauth (1.0.1-4) を設定しています ...
python-lazr.restfulclient (0.13.3-1) を設定しています ...
python-launchpadlib (1.10.2+ds-2) を設定しています ...
python-secretstorage (2.1.1-1) を設定しています ...

 

次にnfcpyのスクリプトをリポジトリからダウンロードします。

$ sudo bzr branch lp:nfcpy
You have not informed bzr of your Launchpad ID, and you must do this to
write to Launchpad or access private data.  See "bzr help launchpad-login".
273個のリビジョンをブランチしました。

$ ls -l
合計 4
drwxr-sr-x 8 root staff 4096  3月  7 12:51 nfcpy

 

次にPython用のUBS接続ライブラリをインストールします。

$ sudo apt-get install python-usb
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  python-usb
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
17.7 kB のアーカイブを取得する必要があります。
この操作後に追加で 132 kB のディスク容量が消費されます。
取得:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main python-usb armhf 0.4.3-1 [17.7 kB]
17.7 kB を 34秒 で取得しました (513 B/s)
以前に未選択のパッケージ python-usb を選択しています。
(データベースを読み込んでいます ... 現在 127249 個のファイルとディレクトリがインストールされています。)
.../python-usb_0.4.3-1_armhf.deb を展開する準備をしています ...
python-usb (0.4.3-1) を展開しています...
python-usb (0.4.3-1) を設定しています ...

以上で必要なもののインストールは完了です。

 

nfcpyの中にexamplesというサンプルコードがあるのでこれを実行してみます。PaSoRiにSuicaを乗せた状態で実行して下さい。

$ cd nfcpy/
$ sudo python examples/tagtool.py show
Traceback (most recent call last):
  File "examples/tagtool.py", line 37, in <module>
    from cli import CommandLineInterface
  File "/usr/local/src/nfcpy/examples/cli.py", line 27, in <module>
    import nfc
  File "/usr/local/src/nfcpy/nfc/__init__.py", line 28, in <module>
    from clf import ContactlessFrontend
  File "/usr/local/src/nfcpy/nfc/clf/__init__.py", line 35, in <module>
    from . import device
  File "/usr/local/src/nfcpy/nfc/clf/device.py", line 39, in <module>
    from . import transport
  File "/usr/local/src/nfcpy/nfc/clf/transport.py", line 34, in <module>
    raise ImportError("missing usb1 module, try 'pip install libusb1'")
ImportError: missing usb1 module, try 'pip install libusb1'

なんかエラーになりました。libusb1をインストールしろと言われているのでとりあえずインストールしました。

$ sudo pip install libusb1
Downloading/unpacking libusb1
  Downloading libusb1-1.4.1.tar.gz (43kB): 43kB downloaded
  Running setup.py (path:/tmp/pip-build-_bzOpK/libusb1/setup.py) egg_info for package libusb1
    
Installing collected packages: libusb1
  Running setup.py install for libusb1
    
Successfully installed libusb1
Cleaning up...

で、もう一回サンプルコードを実行してみます。

$ sudo python examples/tagtool.py show
[nfc.clf] searching for reader on path usb
[nfc.clf] using SONY RC-S380/P NFC Port-100 v1.11 at usb:001:004
** waiting for a tag **
Type3Tag 'FeliCa Standard (RC-S???)' ID=01140114BC13B824 PMM=100B4B428485D0FF SYS=0003

出ました!ID=xxxxというのがSuicaのIDmという識別子です。PMMが製造番号だったかな?Type3TagというのがFeliCaのことです。SYS=0003はNFCのシステムコードでSuicaは0003を使用しています。

他にはSAPICAという札幌のカードでは865Eを使用していたりします。

 

ということで、今回はSuicaのIDmを読み取ることが出来たので、次回は履歴を読み取ってみようと思います!

続き:Raspberry Pi 入門 4日目 – Suicaの履歴を読み取る

1日目はRasbianのインストールとSSHでログインするところまで行いました。今回はその続きです。ラズパイにSSHでログインした状態から始めます。

※設定は自己責任でお願いします。

raspi-config

Raspbianにはraspi-configという設定ツールが内蔵されています。

$ sudo raspi-config

上記コマンドを実行すると画面が真っ青になって少しビビります。キーボードの上下キーで項目を選択してEnterもしくは右カーソルで<Select>をEnterすると実行になります。escキーもしくは右カーソルで<Finish>をEnterすると終了します。

スクリーンショット 2016-03-04 18.44.18

 

1 Expand Filesystem

ファイルシステムを展開・・・SDカードの全容量をOSが使用できるようにします。最初は先頭の2GB程度のパーティションだけを使うようになっているんだとか。

 

実行するといきなりターミナルに結果がバーっと表示されてまたビビります。

Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): Disk /dev/mmcblk0: 7.5 GiB, 8026849280 bytes, 15677440 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: 0x0cf63fa8

Device         Boot  Start     End Sectors  Size Id Type
/dev/mmcblk0p1        8192  131071  122880   60M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      131072 7870463 7739392  3.7G 83 Linux


Command (m for help): Partition number (1,2, default 2): 
Partition 2 has been deleted.

Command (m for help): Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): Partition number (2-4, default 2): First sector (2048-15677439, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (131072-15677439, default 15677439): 
Created a new partition 2 of type 'Linux' and of size 7.4 GiB.

Command (m for help): Disk /dev/mmcblk0: 7.5 GiB, 8026849280 bytes, 15677440 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: 0x0cf63fa8

Device         Boot  Start      End  Sectors  Size Id Type
/dev/mmcblk0p1        8192   131071   122880   60M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      131072 15677439 15546368  7.4G 83 Linux


Command (m for help): The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busy

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

 

完了するとこんなメッセージが表示されます。リブートしろってことですね。

スクリーンショット 2016-03-04 19.05.21

 

2 Change User Password

ユーザーパスワード変更・・・piユーザーのパスワードを変更します。

 

なんか言われるのでEnter。

スクリーンショット 2016-03-04 19.06.26

 

パスワードを2回入力します。

Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

 

お疲れ様でした。

スクリーンショット 2016-03-04 19.06.58

3 Boot Options

ブートオプション・・・起動時にデスクトップ用のGUIが立ち上がるようにするか否かを選択します。

 

4 Wait for Network at Boot

起動時にネットワーク接続を待つ・・・起動時にネットワークに接続されるまで待機するか否かを選択します。

 

ネットワークに繋がらなかったらどうなるのかよく分からないので「Fast Boot」を選んでおいた方がいいかな。

スクリーンショット 2016-03-04 19.21.12

5 Internationalisation Options

国際化のオプション・・・言語と地域の設定を行います。
スクリーンショット 2016-03-04 19.23.57

I1 Change Locale

ロケールを設定します。やたら選択肢が多いので頑張ってスクロールして「ja_JP.UTF-8」を選択します。ここで注意するのが、カーソルを合わせたあと必ずSpaceを打つことです。そのままEnterすると「en_GB.UTF-8」だけが選択された状態になります。

スクリーンショット 2016-03-04 19.49.03

 

次の画面でデフォルトのロケールを聞かれるのでここでも「ja_JP.UTF-8」を選択。

スクリーンショット 2016-03-04 19.49.06
少し時間が掛かります。Generation completeで完了です。

Reloading keymap. This may take a short while
Generating locales (this might take a while)...
  en_GB.UTF-8... done
  ja_JP.UTF-8... done
Generation complete.

 

I2 Change Timezone

タイムゾーンを設定します。Asia -> Tokyo と選べばOKです。

 

I3 Change Keyboard Layout

キーボードのレイアウトを変更できます。

 

I4 Change Wi-fi Country

Wi-fiのチャンネルを変更します。よくわかんないけどとりあえずJPにしておきました。

 

6 Enable Camera

カメラを有効にする・・・カメラのサポートを有効にするか否かを選択します。

カメラモジュールを使用する場合はEnableにすると良いでしょう。

 

7 Add to Rastrack

Rastrackに追加・・・Rastrackというコミュニティみたいなものに登録できます。登録すると地図上のヒートマップに反映されるようです。(http://rastrack.co.uk/

 

8 Overclock

オーバークロック・・・オーバークロックの設定を行います。高負荷時にどこまで無理を許容するかってことですね。(ざっくり)

「あんまり無理すると寿命縮めるよ!」みたいなメッセージが出るので私のような素人は触れないほうが良いと思います。

 

9 Advanced Options

高度なオプション・・・その他の設定を行います。

 

ここは特にいじってないので割愛。

スクリーンショット 2016-03-04 19.41.58

0 About raspi-config

raspi-configについて・・・raspi-configの説明です。特に見る必要はありません。

 

ここまでで設定を変更したのは、

  • 「1 Expand Filesystem」を実行
  • 「2 Change User Password」でパスワード変更
  • 「5 Internationalisation Options」の「I1 Change Locale」でロケールを「ja_JP.UTF8」に変更
  • 「5 Internationalisation Options」の「I2 Change Timezone」でタイムゾーンをAsia -> Tokyoに変更
  • 「5 Internationalisation Options」の「I4 Change Wi-fi Country」でJPに変更

その他の設定は自己責任でお願いします。

 

「1 Expand Filesystem」を実行した場合はリブートしておきましょう。

$ sudo reboot

 

その他の設定

ここまでは全てraspi-configでの設定だったのですが、次は普通にコマンドを打って色々設定します。

 

NTPを変更

NTP(Network Time Protocol)とはネットワークから正しい時刻を取得するためのプロトコルのことで、ここではどこのサーバーから時刻を取得するかを設定します。それを日本標準時を配信しているNICT(情報研究通信機構)のNTPサーバーに変更します。
/etc/ntp.conf の server 0.debian.pool.ntp.org iburst となっている箇所をNICTのサーバー名に変更します。ntp1.jst.mfeed.ad.jpはntp.nict.jpと同期している別のNTPサーバーです。

$ sudo vi /etc/ntp.conf

  :
#server 0.debian.pool.ntp.org iburst
#server 1.debian.pool.ntp.org iburst
#server 2.debian.pool.ntp.org iburst
#server 3.debian.pool.ntp.org iburst
server -4 ntp.nict.jp
server -4 ntp1.jst.mfeed.ad.jp
server -4 ntp2.jst.mfeed.ad.jp
server -4 ntp3.jst.mfeed.ad.jp
  :

 

変更したらntpdを再起動します。

$ sudo /etc/init.d/ntp restart
[ ok ] Restarting ntp (via systemctl): ntp.service.

 

ntpq -p と打ってNICTが表示されればOKです。

$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp-b3.nict.go. .NICT.           1 u    3   64    7    6.248    0.200   0.272
 ntp1.jst.mfeed. 133.243.236.17   2 u    2   64    7    6.158    1.632   0.261
 ntp2.jst.mfeed. 133.243.236.17   2 u    -   64    7    6.460    1.878   0.198
 ntp3.jst.mfeed. 133.243.236.17   2 u   63   64    3    5.313   -0.472   0.453

 

vi で編集する際にABCDが表示される場合

ホームディレクトリに .vimrc を作って set nocompatible と書いておけばいいそうです。sudo vi でファイルを編集する場合はrootの .vimrc にも書いておきましょう。

$ vi .vimrc

set nocompatible

 

rootユーザーのパスワードを変更する

下記コマンドでrootのパスワードを変更出来ます。

$ sudo passwd root
新しい UNIX パスワードを入力してください:
新しい UNIX パスワードを再入力してください:
passwd: パスワードは正しく更新されました

 

以上で2日目の初期設定は終了です!お疲れ様でした!

続き:Raspberry Pi 入門 3日目 – SuicaのIDmを読み取る

 

参考記事: