いつまでも有線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の場合)

 

 

 

参考記事: