いつまでも有線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

ラズパイと繋げてSuicaを読み取る時に使ったFeliCaカードリーダー PaSoRi(RC-S380)をね、分解してみました。中のFeliCaリーダーモジュールだけ取り出せたらもっとコンパクトになってラズパイに組み込みやすくなったりするかもじゃん。

※当たり前ですがおすすめはしません。やるなら絶対に自己責任でお願いします。

 

必要なもの

  • PaSoRi RC-S380
  • ちょうどいいサイズのドライバー

 

分解します

まず裏返して滑り止めシールを取ります。

2016-03-14 12.20.25

 

ドライバーでネジを取ります。

2016-03-14 12.20.56

 

前後にズラしながらカバーを開けます。若干力使います。持った時の軽さで予想はついてたけど思った以上に中はスカスカです。

2016-03-14 12.22.24

 

モジュールを天板から剥がします。両面テープで張り付いていただけでした。

2016-03-14 12.23.19

 

中身です

こんな感じになっています。

2016-03-14 20.42.26

 

反対側

2016-03-14 20.42.48

 

もちろんこのままUSBでラズパイとつないで使えます。

2016-03-14 20.46.35

 

前回の続きです。前回は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の履歴を読み取る