WiFi RTL8188CUS のメモ

WiFi アダプターのメモ書き。

Junk箱を整理していたら、WIFI USB が見つかったのでそれの認識させるメモ。

 

OS は ARMBIAN。

# uname -a
Linux orangepipc 3.4.112-sun8i #30 SMP PREEMPT Sat Apr 30 19:49:10 CEST 2016 armv7l GNU/Linux

USB を差し込んで、lsusb をしたときの型番は以下

# lsusb | grep RTL8188CUS
Bus 003 Device 002: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter

で、kernel モジュールは、以下があればいい

# find /lib/modules -name 8192cu*
/lib/modules/3.4.112-sun8i/kernel/net/wireless/8192cu.ko

こんな感じでロードさせておく

---- /etc/modules
#8189es
8192cu
gpio_sunxi
w1-sunxi
w1-gpio
#w1-therm
#gc2035

省電力モードを切っておくとプチ切れに対応できる模様

---- /etc/modprobe.d/8192cu.conf 
options 8192cu rtw_power_mgnt=0 rtw_enusbss=0

このあたりにパラメータが反映されている模様。

# cat /sys/module/8192cu/parameters/rtw_power_mgnt
0

あとSSIDとPWのファイルを以下で作成

wpa_passphrase "SSID" "PASSWORD" > /etc/wpa_supplicant/wpa_supplicant.conf

IP固定にしておく場合、

---- /etc/network/interfaces
::
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.1.5
netmask 255.255.255.0
gateway 192.168.1.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

接続の状態確認、SSID のスキャンは以下

# iwlist wlan0 scan
wlan0     Scan completed :
          Cell 01 - Address: 90:84:0D:**:**:**
                    ESSID:"JunkHackAP"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.437 GHz (Channel 6)
                    Encryption key:on
                    Bit Rates:144 Mb/s
                    Extra:wpa_ie=*************
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (1) : TKIP
                        Authentication Suites (1) : PSK
                    Extra:rsn_ie=*************
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                    Quality=89/100  Signal level=8/100 

他ホストからping

$ ping -c 10 192.168.1.5
PING 192.168.1.5 (192.168.1.5): 56 data bytes
64 bytes from 192.168.1.5: icmp_seq=0 ttl=64 time=131.314 ms
64 bytes from 192.168.1.5: icmp_seq=1 ttl=64 time=150.921 ms
64 bytes from 192.168.1.5: icmp_seq=2 ttl=64 time=174.333 ms
64 bytes from 192.168.1.5: icmp_seq=3 ttl=64 time=201.884 ms
64 bytes from 192.168.1.5: icmp_seq=4 ttl=64 time=122.028 ms
64 bytes from 192.168.1.5: icmp_seq=5 ttl=64 time=141.495 ms
64 bytes from 192.168.1.5: icmp_seq=6 ttl=64 time=169.318 ms
64 bytes from 192.168.1.5: icmp_seq=7 ttl=64 time=187.959 ms
64 bytes from 192.168.1.5: icmp_seq=8 ttl=64 time=112.811 ms
64 bytes from 192.168.1.5: icmp_seq=9 ttl=64 time=131.375 ms

--- 192.168.1.5 ping statistics ---
10 packets transmitted, 10 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 112.811/152.344/201.884/28.245 ms

イーサネットより100ms は遅いです。アクセスポイントに設定するのはまた今度。

Soracom で IoT はじめました

移動している中、IoT データを送信したいなと。この場合、WIFI がないんですよね。

IoT デバイスからはブルートゥースやWiFi でネット経由へデータは出せるのですが、どこでも、投げたいので Soracom Air の SIM を使い始めました。

 

soracom_air

電波が届く範囲なら、どこでも、データを投げて記録が取れるということで、まずは格安の Linux ボードで Soracom に接続し単純なデータを送信するところまでやってみました。

今回の目標は、「Soracom 経由で、Linux の CPU  温度を ThingSpeak に送信しグラフ化させる」のが目標です。

ThingSpeak とは、IoT データを記録し、グラフ表示するWEBサービスです。このサービスは、自前でも構築可能ですので最終的にはデータ蓄積するサーバを構築しても良さそうです。

これが実現できると、以下のようなグラフがリアルタイムで記録されます。

test_-_ThingSpeak

これを実現するためには、以下のような準備が必要です。

 

・Linux ボードの準備と、その OS の選定

・soracom sim の準備と Linux 側から PPP 接続するための USB モデムの設定

・CPU 温度を取得して thingspeak にデータを投げるスクリプト

・thingspeak 側のアカウントなどの準備

最終的には、自立して稼動させたいので電源周りをどうしようか課題は残ります。

・独立した電源まわりの準備

・電源に充電させる仕組

 

今回 Soracom 経由でインターネットに接続に利用する母艦の Linux ボードは、Orange Pi PC です。ラズベリーパイは、価格は5000円前後しますので屋外でぶっ壊れたときにショックなので、コストパフォーマンスが良い Orange Pi でやることに。

 

Orange Pi シリーズは、過去にも紹介していますが、種類が結構あります。最近発売された WiFi が付いてさらに格安の Orange Pi Lite というものもあります。こちらは約1700円程度で購入できます。人柱的に、このボードも入手中ですので、到着したら改めてレポートしてみたいと思います。

 

さて、soracom と 3G 通信するためにモデムが必要ですが、LGエレクトロニクス・ジャパン製で、OEM では DoCoMo から出ている L-05A を使いました。amazon で中古でゲットしました。osx でも使えるというのがぽちったポイントでした。

IMG_2782

最終的には、もう少しコンパクトにして電池を組み込む予定です。応用すれば GPS モジュールを接続して、位置を補足する IoT デバイスも作れそうです。

 

soracom の管理コンソールからは、データ転送量も見えて管理しやすそうです。

SORACOM_ユーザーコンソール

では、順にポイントと勘所をご紹介します。

 

Linux ボードの準備と、その OS の選定

 

まず、母艦の準備です。Orange PI PC を用意しました。

http://www.orangepi.org/orangepipc/

オフィシャルサイトから、メーカー直販の aliexpress の販売サイトにいけます。メモリ512M でも要求は満たしますので、one とか lite でもよいかと思います。

orangepipc

OS は、ARMBIAN というものを今回は採用。Debian 系の OS となります。

http://www.armbian.com/orange-pi-pc/

8GB の SDCard に書き込みし、IP を固定しておきます。電源は、ラズベリーパイとは違い、マイクロUSBではありませんので、別途 4mm で、センターピンが 1.7mm のDC ジャックを用意しておきます。これは、PSP用USB充電ケーブルと同じなので、100円均一などでもゲットできるかと思います。自分は、ジャックを別途購入し電源ケーブルは自作です。

なお、今回はCPU ヒートシンクとファンを実装しました。設定によっては、ヒートシンクのみや、無しでも運用可能です。

設定によりますが、最高で100度近くまで CPU が発熱しますので寿命が短くなるか壊れる事もありますので注意が必要です。

 

過去にヒートシンクを付けた記事を書いていますのでご参考に。

OrangePi One にFan を付けて全開ベンチマーク

 

soracom sim の準備

次は、soracom の sim を USB モデムで使うための準備です。USB モデムは、今回中古で L-05A を購入しておきました。

まずは、soracom の sim をアクティベートしておきます。管理コンソールよりログインし、sim の操作で可能です。

soracomlogin

 

なかなか簡単操作です。すばらしい。速度クラスは、とりあえず s1.minimum にしておきました。

soracom2

データ通信量が 150MiB を超えたらメールしてくるようにしておきました。有効期限なども設定できるようですね。キャリアになった気分です。

 

Linux 側から PPP 接続するための USB モデムの設定

次に、sim を USB モデムに差込、Linux 機に取り付けます。デフォルトでは、CD-ROMドライブとして認識されるようですが、これは AT コマンドで挙動を制御できるようです。/dev/sr0 を一度イジェクトしておきます。

 

[root@opi 22:34:04 ~]# eject /dev/sr0
eject: unable to eject, last error: Invalid argument
[root@opi 22:34:12 ~]# ll /dev/ | grep ACM
crw-rw---- 1 root dialout 166,   0 May 26 22:34 ttyACM0
crw-rw---- 1 root dialout 166,   1 May 26 22:34 ttyACM1
crw-rw---- 1 root dialout 166,   2 May 26 22:34 ttyACM2
[root@opi 22:34:30 ~]# 

 

そして、AT コマンドで CD-ROM ドライブとして認識しないよう設定しておきます。

 

[root@opi 22:34:49 ~]# screen /dev/ttyACM0
ATZ
OK
AT%USBMODEM=0
[0] MODEM DRIVER

OK
ATZ0
OK

 

あとは、ppp 接続するための設定をしておきます。wvdial パッケージを導入しておきます。

 

[root@opi 15:57:33 log]# apt-get install wvdial

 

設定です。

 

----- /etc/wvdial.conf 
[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2
Init3 = AT+CGDCONT=1,"IP","soracom.io"
Dial Attempts = 3
Modem Type = Analog Modem
Dial Command = ATD
Stupid Mode = yes
Baud = 460800
New PPPD = yes
Modem = /dev/ttyACM0
ISDN = 0
Phone = *99***1#
APN = soracom.io
Username = sora
Password = sora
Carrier Check = no
Auto DNS = 1
Check Def Route = 1

 

systemctl で起動できるよう設定しておきます。システム起動時に起動する設定にはまだしていません。enable にするだけですが。

 

---- /etc/systemd/system/wvdial.service
[Unit]
Description=wvdial service
Wants=network.target

[Service]
Type=simple
ExecStartPre=/sbin/route del default gw 192.168.1.1
ExecStopPost=/sbin/route add default gw 192.168.1.1
ExecStart=/usr/bin/wvdial
ExecStop=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

 

以上で設定は終わり。接続の確認をしておきます。

 

[root@opi 16:02:24 log]# systemctl start wvdial

 

動作したかどうかは、status で見てみます。USB モデムの LED が緑から青色になっていると思います。

 

[root@opi 16:03:29 log]# systemctl status wvdial

::

May 28 16:02:37 orangepipc pppd[19681]: local  IP address 10.182.126.96

May 28 16:02:37 orangepipc pppd[19681]: remote IP address 10.64.64.64

May 28 16:02:37 orangepipc pppd[19681]: primary   DNS address 100.127.0.53

May 28 16:02:37 orangepipc pppd[19681]: secondary DNS address 100.127.1.53

May 28 16:02:37 orangepipc wvdial[19679]: –> local  IP address 10.182.126.96

May 28 16:02:37 orangepipc wvdial[19679]: –> remote IP address 10.64.64.64

May 28 16:02:37 orangepipc wvdial[19679]: –> primary   DNS address 100.127.0.53

May 28 16:02:37 orangepipc wvdial[19679]: –> secondary DNS address 100.127.1.53

 

プライベートなクラスAの IP が割り振られるようですね。ppp0 の状態を見ると以下のようです。

 

[root@opi 16:07:38 log]# ifconfig ppp0

ppp0      Link encap:Point-to-Point Protocol 
          inet addr:10.182.126.96  P-t-P:10.64.64.64  Mask:255.255.255.255

          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1

          RX packets:83 errors:0 dropped:0 overruns:0 frame:0

          TX packets:83 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:3

          RX bytes:10339 (10.0 KiB)  TX bytes:14232 (13.8 KiB)

[root@opi 16:07:43 log]#

 

eth0 も繋がっていますが、ルーティング情報が以下のようになっていれば、ppp0 経由でインターネットに接続可能です。

 

[root@opi 16:09:42 log]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0

10.64.64.64     0.0.0.0         255.255.255.255 UH    0      0        0 ppp0

192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

[root@opi 16:09:44 log]#

 

google までトレースルートしてみましょう。

 

[root@opi 16:11:03 log]# traceroute www.google.com

traceroute to www.google.com (172.217.25.68), 30 hops max, 60 byte packets

1  ec2-175-41-192-232.ap-northeast-1.compute.amazonaws.com (175.41.192.232)  97.266 ms  106.862 ms  106.923 ms

2  27.0.0.71 (27.0.0.71)  116.491 ms  136.763 ms  136.841 ms

3  52.95.30.79 (52.95.30.79)  146.299 ms 52.95.30.77 (52.95.30.77)  156.162 ms 52.95.30.83 (52.95.30.83)  166.192 ms

4  52.95.30.150 (52.95.30.150)  166.290 ms 52.95.30.144 (52.95.30.144)  166.450 ms 52.95.30.150 (52.95.30.150)  205.754 ms

5  52.95.216.117 (52.95.216.117)  185.674 ms  195.447 ms  205.659 ms

6  216.239.54.13 (216.239.54.13)  215.216 ms  79.420 ms  97.653 ms

7  108.170.233.79 (108.170.233.79)  117.188 ms  127.330 ms  146.963 ms

8  nrt13s50-in-f4.1e100.net (172.217.25.68)  156.867 ms  187.089 ms  196.809 ms

[root@opi 16:11:26 log]#

 

soracom のコンソールで 1 時間ごとの使用量を見ると、記録されているようです。

soracom1h

 

CPU 温度を取得して thingspeak にデータを投げるスクリプト

次は、cpu 温度を取得し、データを飛ばすプログラムを作ります。python で作りました。

 

#!/usr/bin/python
# coding: utf-8

import requests
#from time import sleep
import time
api_key='your api key'

def sender():
  while True:
    f = open("/sys/class/thermal/thermal_zone0/temp","r")
    t = f.read()
    payload = {'api_key': api_key, 'field1': str(t)}
    f.close()
    print "CPU Temp is:%s"%t ,
    r = requests.get('http://52.7.53.111/update', params=payload)
    print "Result: ", r.text
    time.sleep(1.0)

def main():
    sender()

if __name__ == '__main__':
  main()

 

簡単にプログラムを補足します。

python のライブラリを以下のように入れておきます。

 

# apt-get install python-dev

# apt-get install python-pip

# pip install requests

 

api_key には、書き込みのAPI Key を入れておきます。

 

Channels_-_ThingSpeak

データをhttps (SSL)経由の post で投げるとパケットが消費されるので、ここでは、get で投げています。

api.thingspeak.com を名前解決すると以下のように2つIPが出ますので、ここでは片方のIPを指定しています。相手側の事情でIP が変わることもあるかもしれません。

 

# dig api.thingspeak.com

::

;; ANSWER SECTION:

api.thingspeak.com.    60    IN    A    52.200.157.52

api.thingspeak.com.    60    IN    A    52.7.53.111

 

プログラムを以下のように実行します。

 

[root@opi 18:20:46 work]# python t.py

 

実行すると、以下のようになります。

 

[root@opi 18:20:46 work]# python t.py

CPU Temp is:38

Result:  401

CPU Temp is:38

Result:  0

CPU Temp is:38

Result:  0

CPU Temp is:38

Result:  0

CPU Temp is:38

Result:  0

 

CPU の温度を上げるため、負荷を UnixBench でかけてみます。

 

[root@opi 18:08:33 UnixBench]# ./Run -c 4

 

グラフ表示は、こんな感じで出ています。

test_-_ThingSpeak 2

CPU 温度がこれで1秒ごとに記録されていきますが、600秒に一度くらいでいいので、修正し、ログオフ後もスクリプトが動作するよう以下のように nohup で実行しておきます。

 

[root@opi 18:34:08 work]# nohup python t.py &

[1] 13673

[root@opi 18:34:28 work]# nohup: ignoring input and appending output to ‘nohup.out’

[root@opi 18:34:32 work]# ps axu | grep python

::

root     13673  4.1  0.8  13796  8428 pts/0    S    18:34   0:00 python t.py

 

なお、今のところ soracom の接続料金は 119 円のようです。

soracompay

 

しばらく、CPU 温度を記録させてテストしてみることに。GPIO からセンサーを取り付ければ、外気温や湿度、明るさや、PM2.5 など記録したいものを投げれます。

ちなみに、1日経過後、課金は以下のようです。

soracom_2

この母艦を利用し、WiFi 経由で センサーデバイスを作るのが実用的かもしれません。組み合わはいろいろありますね。

この続きはまたの機会に。

 

Orange Pi Lite が出ていました

Orange Pi Lite なかなか出ないなぁと思ってましたが、今日WEBを散歩していたらなんと販売開始されているようです。

5/9 くらいから販売していたようです。

 

New-Coming-Orange-Pi-Lite-With-Wifi-Antenna-Support-ubuntu-linux-and-android-mini-PC-Beyond

基本的には、one の Lan が撤廃され、WiFi が内臓、 USB が1つから2つに増えた感じです。1700円弱でゲットできるので、サンプルに1つポチっておきました。これで、Orange Pi シリーズは3個になりました。

 

あと、aliexpress のアフリエイトも初めてみました。

 

ARMBIAN を Orange PI PC に入れてみた

前から気になっていた、ARMBIAN を Orange PI PC に入れてみました。

Orange_Pi_PC_H3_–_armbian

8GBのSD に書き込みしてブート。今回は、デスクトップ版のを使ってみました。

ウィザードや、各種スクリプトが走るようで2,3回リブートを繰り返し領域拡張などやっているようです。

少々、設定してあとはリモートから接続。

  ___                               ____  _   ____   ____ 
 / _ \ _ __ __ _ _ __   __ _  ___  |  _ \(_) |  _ \ / ___|
| | | | '__/ _` | '_ \ / _` |/ _ \ | |_) | | | |_) | |    
| |_| | | | (_| | | | | (_| |  __/ |  __/| | |  __/| |___ 
 \___/|_|  \__,_|_| |_|\__, |\___| |_|   |_| |_|    \____|
                       |___/                              

Welcome to ARMBIAN Debian GNU/Linux 8 (jessie) 3.4.112-sun8i 

System load:   0.13                Up time:       5 hours        Local users:   4                
Memory usage:  35 % of 1000Mb     IP:            192.168.1.24
CPU temp:      42°C               
Usage of /:    18% of 15G        

Last login: Sat May 21 18:30:31 2016 from 192.168.1.17
[root@opi 19:11:03 ~]# 

ふむふむ。

気になる部分だけピックアップ。

[root@opi 19:09:13 ~]# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
1296000
[root@opi 19:09:13 ~]# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
480000
[root@opi 19:09:24 ~]# cat /sys/class/thermal/thermal_zone0/temp
41
[root@opi 19:09:34 ~]# lscpu
Architecture:          armv7l
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    4
Socket(s):             1
CPU max MHz:           1296.0000
CPU min MHz:           480.0000
[root@opi 19:09:37 ~]# uname -a
Linux orangepipc 3.4.112-sun8i #30 SMP PREEMPT Sat Apr 30 19:49:10 CEST 2016 armv7l GNU/Linux
[root@opi 19:09:44 ~]# df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/mmcblk0p1 ext4       15G  2.6G   12G  18% /
udev           devtmpfs   10M     0   10M   0% /dev
tmpfs          tmpfs     201M  4.7M  196M   3% /run
tmpfs          tmpfs     501M     0  501M   0% /dev/shm
tmpfs          tmpfs     5.0M  4.0K  5.0M   1% /run/lock
tmpfs          tmpfs     501M     0  501M   0% /sys/fs/cgroup
tmpfs          tmpfs     501M   56K  500M   1% /tmp
tmpfs          tmpfs     101M  4.0K  101M   1% /run/user/1000
tmpfs          tmpfs     101M     0  101M   0% /run/user/0
[root@opi 19:09:51 ~]# ldmod
-bash: ldmod: command not found
[root@opi 19:10:06 ~]# lsmod
Module                  Size  Used by
iptable_filter          1277  0 
ip_tables              10568  1 iptable_filter
x_tables               13483  2 ip_tables,iptable_filter
cdc_acm                15348  0 
mali_drm                2728  1 
drm                   178585  2 mali_drm
mali                  123476  0 
ump                    29339  3 mali
8189es                999286  0 
hid_logitech_dj        10048  0 
[root@opi 19:10:09 ~]# 

ビデオドライバーは、このカーネルじゃないと読めないやつのようです。H263 のハードウェアデコーダは、Cedrus というプロジェクトのもののようです。

CPU 速度は ONE の クロックに合わせて、少し控え目に設定されているようです。

VNC で接続、様子を見てみました。

junkhack_s_X_desktop__orangepipc_1_

ベンチマークは以下な感じ。

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   System: orangepipc: GNU/Linux
   OS: GNU/Linux -- 3.4.112-sun8i -- #30 SMP PREEMPT Sat Apr 30 19:49:10 CEST 2016
   Machine: armv7l (unknown)
   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
   13:05:05 up 52 min,  3 users,  load average: 2.53, 2.22, 1.83; runlevel 5

------------------------------------------------------------------------
Benchmark Run: Sat May 21 2016 13:05:05 - 13:34:48
0 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       12095149.8 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     2406.2 MWIPS (10.0 s, 7 samples)
Execl Throughput                               1170.5 lps   (29.8 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        152581.2 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           43873.6 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        386461.5 KBps  (30.0 s, 2 samples)
Pipe Throughput                              811390.4 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  92520.6 lps   (10.0 s, 7 samples)
Process Creation                               2138.7 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   2235.9 lpm   (60.1 s, 2 samples)
Shell Scripts (8 concurrent)                    299.4 lpm   (60.6 s, 2 samples)
System Call Overhead                        1883677.8 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   12095149.8   1036.4
Double-Precision Whetstone                       55.0       2406.2    437.5
Execl Throughput                                 43.0       1170.5    272.2
File Copy 1024 bufsize 2000 maxblocks          3960.0     152581.2    385.3
File Copy 256 bufsize 500 maxblocks            1655.0      43873.6    265.1
File Copy 4096 bufsize 8000 maxblocks          5800.0     386461.5    666.3
Pipe Throughput                               12440.0     811390.4    652.2
Pipe-based Context Switching                   4000.0      92520.6    231.3
Process Creation                                126.0       2138.7    169.7
Shell Scripts (1 concurrent)                     42.4       2235.9    527.3
Shell Scripts (8 concurrent)                      6.0        299.4    499.1
System Call Overhead                          15000.0    1883677.8   1255.8
                                                                   ========
System Benchmarks Index Score                                         451.1

[root@opi 13:34:48 UnixBench]# 

kindle 、公園で本読むのが気持ちいい

今日は本当にいい天気でした。真夏な感じで、3時過ぎに公園に行ったらちょうどいい感じの天気です。昼間は暑かったですね。

アリエクからの届け物を郵便局に引き取りに行った帰りに、少し休憩。kindle で少し本を読んでみました。

2

スマホやタブレットだと、太陽光の下だととても読む気にはなれないのですが、これはいいですね。

1あまりにいい天気で、気持ちよかったのでゴロ寝しながら、1小説だけ読書タイム。軽いので、片手で持てるのがいいです。

kindle って、他のユーザがアンダーライン引いてあるところが出るんですが、これが結構ためになったり。

 

kindle 持ちになって気が付いたんですが、毎月1冊無料で読めるんですね。ヘビーな読書ユーザではないですが、月1で何か読めるのは楽しみです。あと、スマホだと遊んじゃうんだけど、これだと本読みますかって感じになるし。

 

さて、帰ったら Orange PI PC に ARMBIAN を入れてみますか。

Kindle Wi-Fi を2480円でゲット

日曜日は、免許の更新で現場に到着したらかなりの待ち行列!

スマホ見て時間潰すかと、何気なく、SmartNews を見ていたら、Kindle がキャンペーンで2480円で買えるという情報を見ました。

image

一番安いやつなんですが、前から欲しかったのでポチっておきました。

 

2台ゲットして、1台は分解して遊ぼうかなと思って今日もう一度見ると、在庫切れとのこと。

どうやら、このキャンペーンは、数に達したようで終わったようです。

image

1台ゲットできてラッキーでした。昨日ポチっていなければ、買えなかったわけですね。