僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
Raspbianで、有線LANから自動でIPを貰わず、無線だけ接続するようにする。
これまでの設定では、有線と無線を接続すると、無線が無効になってしまった。
auto lo iface lo inet loopback #iface eth0 inet dhcp allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp
若干試行錯誤したが、一行を無効にするだけでよかった。
この状態で、sudo dhclient eth0 やっても大丈夫。
default gatewayも変わらない(resolv.confは変わるが)。
LAN-GTJU3。1900円だった。
以下、Ubuntu14.04。
$ diff before after 937a938,948 > [16247.248204] usb 1-4: new high-speed USB device number 3 \ using ehci-pci > [16247.386713] usb 1-4: New USB device found, idVendor=0b95,\ idProduct=1790 > [16247.386720] usb 1-4: New USB device strings: Mfr=1, \ Product=2, SerialNumber=3 > [16247.386723] usb 1-4: Product: AX88179 > [16247.386727] usb 1-4: Manufacturer: ASIX Elec. Corp. > [16247.386730] usb 1-4: SerialNumber: XXXXXXXXXXXXXX > [16248.278933] ax88179_178a 1-4:1.0 eth1: register \ 'ax88179_178a' at usb-0000:00:04.1-4, ASIX AX88179 USB 3.0 \ Gigabit Ethernet, YY:YY:YY:YY:YY:YY > [16248.278974] usbcore: registered new interface driver \ ax88179_178a > [16248.496306] systemd-udevd[9154]: renamed network \ interface eth1 to eth5 > [16249.178079] IPv6: ADDRCONF(NETDEV_UP): eth5: link is not ready > [16249.178718] IPv6: ADDRCONF(NETDEV_UP): eth5: link is not ready
Raspbian でも使える。
無理かとは思ったが、
前に買ったGIGAと一緒にRasPI Bで
認識することができた。
がんがん流しても動くかは未確認。
変換チップを埋め込んだケーブル。
片端がUSBで、他方が4本のピンに分かれている。
共立で995円。
袋には、seeedstudio 359313001とか、かすれ気味に
印刷してあった。
Ubuntu14.04であっさり。
$ diff before after 1070a1071,1077 > [ 2439.350616] usb 3-1: new full-speed USB device number 3 using xhci_hcd > [ 2439.386973] usb 3-1: New USB device found, idVendor=067b, idProduct=2303 > [ 2439.386985] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 > [ 2439.386991] usb 3-1: Product: USB-Serial Controller > [ 2439.386996] usb 3-1: Manufacturer: Prolific Technology Inc. > [ 2439.390016] pl2303 3-1:1.0: pl2303 converter detected > [ 2439.418347] usb 3-1: pl2303 converter now attached to ttyUSB0
取説がなく、4本足のどれがどこに接続されるのか
分からず適当に検索。
千石電商のページによると、
赤: +5V 黒: GND 緑: TxD 白: RxD
適当なPIに繋いでみたが、通信はなぜかできなかった。
何か設定が必要なのかも。
$ uname -a Linux $HOST 3.18.7+ #755 PREEMPT Thu Feb 12 17:14:31 GMT 2015 \ armv6l GNU/Linux $ ls -l /lib/modules/ 合計 64 drwxr-xr-x 3 root root 4096 10月 13 23:52 3.12.29+ drwxr-xr-x 3 root root 4096 10月 20 14:49 3.12.30+ drwxr-xr-x 3 root root 4096 11月 21 08:48 3.12.32+ drwxr-xr-x 3 root root 4096 11月 28 22:05 3.12.33+ drwxr-xr-x 3 root root 4096 12月 20 02:22 3.12.34+ drwxr-xr-x 3 root root 4096 3月 27 09:32 3.18.10+ drwxr-xr-x 3 root root 4096 3月 27 09:33 3.18.10-v7+ drwxr-xr-x 3 root root 4096 1月 25 22:19 3.18.3+ drwxr-xr-x 3 root root 4096 2月 8 05:48 3.18.6+ drwxr-xr-x 3 root root 4096 2月 8 05:48 3.18.6-v7+ drwxr-xr-x 3 root root 4096 3月 31 11:29 3.18.7+ drwxr-xr-x 3 root root 4096 3月 31 11:29 3.18.7-v7+ drwxr-xr-x 3 root root 4096 3月 5 09:56 3.18.8+ drwxr-xr-x 3 root root 4096 3月 5 09:56 3.18.8-v7+ drwxr-xr-x 3 root root 4096 3月 18 22:48 3.18.9+ drwxr-xr-x 3 root root 4096 3月 18 22:48 3.18.9-v7+
必ずしも最新バージョンが動いてる訳でもなく。ということか。
ついでに今rpi-update すると、3.18.10+になった。
動作させるまで、少しかかった。
一昨昨日のイベントに持ってゆくつもりで、その前日夕方に キットを共立で購入し、その日のうちになんとか組み立て終えた。
でも、動作しなかった。
起動時メッセージはAV信号のモニタに表示されるが、
キーボード入力にぜんぜん反応しなかった。HHK2を含め、手元にある
PS/2キーボード3,4台どれもだめ。
イベントに持ってゆくのは諦めて試行錯誤。
自分のはんだ付けを疑い、何度かやりなおす。
汚くなっただけであった。
電圧計を当てて(
Twitter
)みたりもした。GNDとRxD
を短絡させると、画面に変な文字が出ることもあった。
GNDとRESETを一瞬接続させると、リセットできた。
いろいろな
テレビや(
Twitter)
キーボード(
Twitter)
に接続して、ようやく
わかった(
Twitter)。
HHK2の延長ケーブルが祟ったようだ。延長ケーブルなし
なら正常動作する。
ちなみに延長ケーブルはPCでは問題なく使える。
さて、これからソフト。BASICインタープリタと 本気で向かい合うのは実は初めてだったり。
fizzbuzzが4倍になった。
IchigoJamのベンチマークをやってみた。
まずVIDEO 0/1で画面表示を切り/切らず、
tick() を実行ループの前後に入れてストップウォッチ代わりにする。
ループ回数は適当に500回。その間はLEDをつけっぱなしにする。
END の前で画面表示を戻す。
画面表示 ON では 1138(18.97秒)、OFFにすると 281(4.68秒)になった。
ちなみに、AVケーブルを抜いても、スピードは変わらない。
LED点灯のコマンドを消しても、ベンチマークの値は変化しなかった。というか 再起動しても全然変わらない。
debian jessieで。
$ systemctl status ● $HOSTNAME State: running Jobs: 0 queued Failed: 0 units Since: 火 2015-04-14 13:24:36 JST; 8min ago CGroup: / ├─1 /sbin/init ├─system.slice │ ├─avahi-daemon.service │ │ ├─384 avahi-daemon: running [$HOSTNAME.local │ │ └─391 avahi-daemon: chroot helpe │ ├─dbus.service │ │ └─385 /usr/bin/dbus-daemon --system \ --address=systemd: --nofork --nopidfile --systemd-activation │ ├─cron.service │ │ └─375 /usr/sbin/cron -f │ ├─apache2.service │ │ ├─515 /usr/sbin/apache2 -k start │ │ ├─521 /usr/sbin/apache2 -k start │ │ └─522 /usr/sbin/apache2 -k start │ ├─atd.service │ │ └─376 /usr/sbin/atd -f │ ├─systemd-journald.service │ │ └─134 /lib/systemd/systemd-journald │ ├─ssh.service │ │ └─377 /usr/sbin/sshd -D │ ├─systemd-logind.service │ │ └─380 /lib/systemd/systemd-logind │ ├─system-getty.slice │ │ └─getty@tty1.service │ │ └─427 /sbin/agetty --noclear tty1 linux │ ├─systemd-udevd.service │ │ └─143 /lib/systemd/systemd-udevd │ ├─mysql.service │ │ ├─462 /bin/sh /usr/bin/mysqld_safe │ │ └─931 /usr/sbin/mysqld --basedir=/usr \ --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin \ --user=mysql --log-error=/var/log/mysql/error.log \ --pid-file=/var/run/mysqld/mysqld.pid \ --socket=/var/run/mysqld/mysqld.sock --port=3306 │ ├─rpcbind.service │ │ └─351 /sbin/rpcbind -w │ ├─system-ifup.slice │ │ └─ifup@eth0.service │ │ └─459 dhclient -v -pf /run/dhclient.eth0.pid \ -lf /var/lib/dhcp/dhclient.eth0.leases eth0 │ ├─rsyslog.service │ │ └─402 /usr/sbin/rsyslogd -n │ └─acpid.service │ └─403 /usr/sbin/acpid └─user.slice └─user-$UID.slice ├─session-1.scope │ ├─1082 sshd: $USER [priv] │ ├─1087 sshd: $USER@pts/0 │ ├─1088 -bash │ └─1104 systemctl status └─user@$UID.service ├─1084 /lib/systemd/systemd --user └─1085 (sd-pam)
やれやれ長いこと。
だいぶ前に買って、しばらく
放置していた
USBシリアルケーブル
TxDとRxDをクロスさせるのがミソだった。赤
と黒(黒は繋がないとノイズ出まくり)はつなぐ必要はなさげ。
しばらく端末を合わせるのに手間取った。
ckermitでは、結局こうなった。
set line /dev/ttyUSB0 set speed 115200 set carrier-watch off set flow xon/xoff set local-echo on set terminal newline-mode on set terminal lf-display crlf
リセットをかけた後から fizzbuzzの 実行まで、こんな感じ。
IchigoJam 0.9.7 by @taisukef OK LOAD 0 Loaded 282byte OK LIST 10 VIDEO 0 20 LET S,TICK() 30 LED1 40 LET L,500 50 LET R,70 60 LET I,1 70 IF I%15=0 THEN PRINT "FizzBuzz" ELSE IF I%5=0 THEN PRINT "Buzz" ELSE IF I%3=0 THEN PRINT "Fizz" ELSE PRINT I 80 LET I,I+1 90 IF I < = L THEN GOTO R 100 LET E,TICK() 110 PRINT E-S 120 LED0 130 VIDEO1 140 END OK RUN
BSキー打鍵で変な(フォントの用意されない)
文字記号が表示される。これは後の課題とする。
あと、
VIDEO 0 にすると速くはなるが、
節電にはならないようだった。画面表示を
切った時だけ一時的に消費電力が下がるが、
すぐ戻って有意差が見られなくなってしまう。
キーボードとAVケーブルを
抜いた時ほどの変化はない。
キットに入っていたが、今日まで放ったらかしであった。
接続(拡大写真あり)は、"Sound"が表示してあるピン(25番)とGNDをつなぐだけ。
まだプログラムらしいのは書いてない。BEEP命令で、音が出ることを確認しただけ。
kermit -y INITALIZATION_FILE で違う初期設定が可能な模様。
電車の中であたふたと 苺ジャムのファームを シリアル経由で上げてみた。
ichigojam-1.0.0-b2.バージョン55 をFacebookからダウンロード、
unzipする。
さっきまでのシリアル接続に加え、ISP-GND間も接続。
スイッチを入れると、LEDが赤く光る。
$ lpc21isp -bin ichigojam-us.bin /dev/ttyUSB0 115200 1200 lpc21isp version 1.94 File ichigojam-us.bin: loaded... image size : 20364 Image size : 20364 Synchronizing (ESC to abort)................................\ ............................................................\ ........ no answer on '?'
エラー番号は確認してないが、ともかく止まってしまった。
なんかうまくいってないみたい。
電源を切ってISPのジャンパを外し、
再度起動させても何も変化なかった。
JISキーボード向けでもう一度。
$ lpc21isp -bin ichigojam.bin /dev/ttyUSB0 115200 1200 lpc21isp version 1.94 File ichigojam.bin: loaded... image size : 20364 Image size : 20364 Synchronizing (ESC to abort)................................\ ........................................ OK Read bootcode version: 1 7 Read part ID: LPC1114.../102, 32 kiB FLASH / 4 kiB SRAM (0x1A40902B) Will start programming at Sector 1 if possible, and conclude with Sector 0 to ensure that checksum is written last. Erasing sector 0 first, to invalidate checksum. OK Sector 1: ...........................|.........................|\ .........................|......................... Sector 2: ...........................|.........................|\ .........................|......................... Sector 3: ...........................|.........................|\ .........................|......................... Sector 4: ...........................|.........................|\ .........................|......................... Sector 0: ..........................|.........................|.\ ........................|......................... Download Finished... taking 4 seconds Now launching the brand new code
今度はうまくいったようだ。
IchigoJam BASIC 1.0.0 by jig.jp OK
SAVEしていたプログラムは、消えてなかった。
ichigojam-us.bin の書き換えは、今度はうまくいった。昨晩と何が違うのか、謎。
-wipe オプションの間違った -yipe で問題なくできてしまった。その後はそれなしでも
3秒ほどで書き換えができた。
-wipe オプションを付け直してみた。
$ time lpc21isp -wipe -bin ichigojam-us.bin /dev/ttyUSB0 115200 1200 lpc21isp version 1.94 File ichigojam-us.bin: loaded... image size : 20364 Image size : 20364 Synchronizing (ESC to abort)....................................\ .................................... OK Read bootcode version: 1 7 Read part ID: LPC1114.../102, 32 kiB FLASH / 4 kiB SRAM (0x1A40902B) Will start programming at Sector 1 if possible, and conclude with\ Sector 0 to ensure that checksum is written last. Wiping Device. OK Sector 1: ..........................|.........................|\ .........................|......................... Sector 2: ..........................|.........................|\ .........................|......................... Sector 3: ..........................|.........................|\ .........................|......................... Sector 4: ..........................|.........................|\ .........................|......................... Sector 0: ..........................|.........................|\ .........................|......................... Download Finished... taking 3 seconds Now launching the brand new code real 0m38.887s user 0m0.070s sys 0m0.339s
fizzbuzzなどのプログラムは全て消えた。
流石に制御構造が IF と GOTO(行番号だけらしい)ではちょっと。
と考えて
1.0.0-b2にアップデートしていた。
10 for x=10 to 100 step 10 20 beep x,200 30 print x 40 wait 50 50 next 60 beep 0,0 70 end
Debian Wikiを見ながら適当に。
wheezy(i386)のnetboot.tar.gz を貰ってきて/var/lib/tftpboot/debianの下に展開し、
pxebootを設定。ついでに
Jessieのamd64も貰って加えた。ちょっとちぐはぐだがいいか。
dhcp とかそのへんは
以前の使い回し。
$ cat /var/lib/tftpboot/pxelinux.cfg/default default debian label debian kernel debian/debian-installer/i386/linux append initrd=debian/debian-installer/i386/initrd.gz label debian64 │···· kernel debian/debian-installer/amd64/linux │···· append initrd=debian/debian-installer/amd64/initrd.gz
仮想環境でDebianのインストーラが立ち上がることを確認し、 リモートのデバイスでインストール。ネットワークは 適当なタイミングでつなぎ替える。
某タブレットにjessieを入れる。デフォルトでは液晶画面に
何も映らなかったが、Xを入れると見えるようになった。
オートログインについては前に書いていた気もするが、よく覚えてない。
適当に検索して、
$ grep -v "^#\|^$" /etc/lightdm/lightdm.conf [LightDM] [SeatDefaults] autologin-user=$USER autologin-user-timeout=0 [XDMCPServer] [VNCServer]
LXDEで、デスクトップのアイコン。適当にコピペなど。
$ ~/デスクトップ$ cat firefox.desktop [Desktop Entry] Encoding=UTF-8 Version=1.0 Type=Application Exec=firefox %u Icon=iceweasel Terminal=false Name=Iceweasel Comment= Firefox Debian Categories=Application;Network;WebBrowser; MimeType=text/html;text/xml;application/xhtml+xml;\ application/xml;application/rss+xml;\ application/rdf+xml;image/gif;image/jpeg;image/png;\ x-scheme-handler/http;x-scheme-handler/https;\ x-scheme-handler/ftp;x-scheme-handler/chrome;\ video/webm;application/x-xpinstall;
IchigoJamで、 1.0.0-bata4以降は それより前とは違う仕様になるとのこと。
演算子の優先順位が0.9.xと1.xで変わった模様。10段階が7段階に整理されて、ビットオアが足し引き算と同じになり、ビットシフトとビットアンド、ビットXORが掛け割り算と同じになった、らしい
— さとう (@sato_makoto) 2015, 4月 24
とりあえずは現在の仕様をと。
print 10 + 2 ^ 5 9 OK print (10 + 2) ^ 5 9 OK print 10 + (2 ^ 5) 17 OK
動作中にLEDを点灯させ、ボタンを押すとビープ音がなるようにしてみた。
コメントも入れた。
IchigoJam BASIC 1.0.0b4 jig.jp OK load 3 Loaded 238byte OK list 10 rem file 3 20 rem beep when pressed button 30 video 1 40 let a,40 50 let b,5 60 f=tick() 70 e=800 80 led 1 90 for i=0 to e 100 rem print i 110 if btn() then beep a,b 120 next 130 led 0 140 print tick() - f 150 video 1 160 end OK
何もしないでいると388(6.47秒)、ずっと
押し続けていると390(6.50秒)。
video 0 にすると141(2.35秒),同114(同2.4秒)
printがほとんどなくても、動作スピードは三倍近くになった。
特に大層なことはしていない。
昨日、いつ買ったか忘れた
キットを組み立てていた。
USBハブの5Vではやや高すぎる気がしたので、RasPIの3.3Vを頂戴する。
JP1-JP6のどれかを短絡させるとスピーカからサイレンが鳴る
(いちどにひとつだけ)。
動作確認などやっているうちに、
ジャンパの短絡は必要でなく、単に適当な直流電圧を
IC(UTC 1618L)に近い側に印加しすればいいことに気づいた。
まかり間違えてPiを壊す可能性も考えて、魔改造のAにする。こちらは
適当なGPIOに接続。
あとは動作確認のスクリプト。
#!/usr/bin/env python # -*- coding: utf-8 -*- from sys import argv import time import RPi.GPIO as GPIO port = 17 dulate_sec = 3 GPIO.setmode(GPIO.BCM) GPIO.setup(port, GPIO.OUT) GPIO.output(port,GPIO.HIGH) time.sleep(dulate_sec) GPIO.cleanup()
音を出している間、電流計は50mAほどはねた。
取説にある「動作時電流 平均50mA(電源電圧3V時)」と大体一致している
らしい。
apacheが2.2から2.4に上がった結果、これまで の設定では動作しなくなった。
$ sudo systemctl restart apache2.service Job for apache2.service failed. See \ 'systemctl status apache2.service' and \ 'journalctl -xn' for details.
前者、 後者とも分かりにくかったが、 前者の末尾に
Hint: Some lines were ellipsized, use -l to show in full.
とあった。確認した結果、
Apr 30 13:22:25 $HOST apache2[2014]: AH00526: Syntax error \ on line 10 of /etc/apache2/sites-enabled/000-default.conf: Apr 30 13:22:25 $HOST apache2[2014]: Either all Options \ must start with + or - , or no Option may.
で解決。
$ sudo systemctl status apache2.service
* apache2.service - LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2)
Active: active (running) since Thu 2015-04-30 13:35:56 JST; 6min ago
Process: 1928 ExecStop=/etc/init.d/apache2 stop \
(code=exited, status=0/SUCCESS)
Process: 2042 ExecStart=/etc/init.d/apache2 start \
(code=exited, status=0/SUCCESS)
CGroup: /system.slice/apache2.service
|-2056 /usr/sbin/apache2 -k start
|-2059 /usr/sbin/apache2 -k start
|-2060 /usr/sbin/apache2 -k start
`-2061 /usr/sbin/apache2 -k start
Apr 30 13:35:55 $HOST apache2[2042]: Starting web server: apache2AH00558:...ge
最後尾が分かりにくいが、"apache2AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message"らしい。
Options ディレクティブの中身全部に +や-が必要になったのはいつからか、 よく分からない。
RasPIでDNGR-G48を操作する
スクリプトを上げておいた。
任意のポートを任意時間とか、
ランダム再生とか、
それから、暴走に備えて(結構煩い)
全部停止するスクリプトも。
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。