けろけろ堂のブログ

自転車とPCなどについてつらつらと書きます。

ワンタッチピクニカ レストア(その2)

間があきましたが、とりあえず塗装を剥いで磨き作業をしました。
思ったより錆びてました。
IMG_20160702_172912




















メインのフレームも塗装剥がし。どうすんだよ、これ・・・状態。
IMG_20160703_130048




































紙やすりで磨きました。左半分は仕上げ前。
IMG_20160705_000745




































次はサフ掛けです。

 

ワンタッチピクニカ レストア(その1)

以前から気になっていたブリヂストンのワンタッチピクニカをヤフオクで入手しました!
この自転車の存在を知ったのは漫画「並木橋通りアオバ自転車店 第2巻 2話」 です。発売が1981年ごろらしいので、初期型だと30年以上前の製品です。

ご存じない方にはこれを見ていただきたいです。レトロちっくで可愛いと思いませんか?
 
opc1_001





初めて利用したヤフオクでしたが、出展した方のおかげでスムースに取引出来ました。多謝!


それで、落札したのがこれです!
IMG_20160615_201200

速攻でバラしたので、これしか残っていません・・・・

では、細部を見ていきましょう。まずはタイヤ。ぱっと見はそれほど劣化していないですが、よく見ると結構亀裂が入っています。多分チューブもダメでしょうね。 IMG_20160615_201526



そしてキャリパーブレーキ。あ~ 磨けばなんとかなるかなぁ? シューは交換だ。 IMG_20160615_201115



最後はハンドル。ゴリゴリ重いので、ヘッドパーツ交換だ。 IMG_20160615_201510










というわけで、フルレストア決定! これは大掛かりになるなぁw
前から自転車をフルレストアしたいと思ってたので、ちょうどいい機会です。先達さんの知恵をググりながらやっていきます!
 

Bluetoothでテザリング

Bluetoothでテザリング

そんな技があるとは知らなかったのですが、どうやらiPad(iPhone)やAndroidを親機としてBluetoothテザリングができるようです。

いつものごとくRaspberry Piを使ってテストをします。前提としてはRaspberry Pi側でUSB-Bluetoothドングルが使える状態になっていることとします。大抵のドングルはドライバーを入れずに認識するはずですが、不幸にもカーネルが対応していなかった場合はソースを見つけてコンパイルして下さい。

ググってみたら、結構簡単そうでしたが一筋縄では行かなかったです。カーネルのバージョンが3.x.yと4.x.yで挙動が異なりました。結果を先に述べますと、カーネルのバージョンを4.x.yにするとBlueZプロトコルスタックが古いと怒られてしまい、BlueZ最新版をソースからコンパイルが必要となりました。


3.x.yの場合
当時、rpi-3.19.yがLinux3系の最新版でした。この環境でBluetoothテザリングをする方法を述べます。

Bluetooth関係のパッケージをインストールします。

$ sudo -s
# apt-get update
# apt-get install bluetooth bluez-utils bluez-compat

まずはBluetoothのデバイス名を調べます。おそらくhci0のはずですが、一応確認。

# hciconfig

hci0が「UP RUNNING ...」となっているはずです。UPになっていない場合は、手動でUPします。

# hciconig hci0 up

ペアリング時にPINコードを入れるのが面倒なので、ペアリングスクリプトを一部書き換えます。

# vi /usr/bin/bluez-simple-agent

capability = "KeyboardDisplay"

capability = "DisplayYesNo"


ここは余談ですが、キーボードとマウスをペアリングする方法を簡単に述べます。

■Bluetoothキーボード(当たり前ですが有線のUSBキーボードが接続済みかsshでリモートからログインしているという前提です。)


ペアリングするBluetoothキーボードをペアリングモードにします。

Raspberry Pi上でデバイスのスキャンをします。

# hcitool scan

スキャン結果、ペアリングをしたいキーボードのMACアドレスが表示されます。表示されない場合はBluetoothキーボードをRaspberry Piに近づけてscanを何度か繰り返して下さい。

scanの結果、キーボードのMACアドレスが「12:34:56:78:90:12」であった場合

ペアリング
# bluez-simple-agent hci0 12:34:56:78:90:12
yes/noが聞かれますので、yesを入力して下さい。

再起動しても接続されるようにする
# bluez-test-device trusted 12:34:56:78:90:12 yes
# bluez-test-input connect 12:34:56:78:90:12

マウスも同じです。



さて、本題のテザリングです。

親機になるiPad(iPhone)またはAndroidのテザリングをONにします。
キーボードのペアリングと同じくscan→ペアリングをします。
# hcitool scan

00:11:22:33:44:55 xxx iPad

# bluez-simple-agent hci0 00:11:22:33:44:55
# bluez-test-device trusted 00:11:22:33:44:55 yes

BluetoothドングルをネットワークI/Fとして動作させるために、ネットワークの設定ファイルを編集します。

/etc/network/interfacesの末尾に以下の行を追加します

iface bnep0 inet dhcp

# vi /etc/network/interfaces

auto
iface wlan0 inet dhcp
:
:

iface bnep0 inet dhcp

テザリング開始
# pand --connect 00:11:22:33:44:55 -role PANU --persist 30

このコマンドの結果エラーが出なければテザリング成功です。
一応ネットワークI/Fとして認識されているか確認をします。

# ifconfig bnpe0
ステータスがUPかつIPアドレスが振られている場合は成功です。

コマンドラインからwgetやXを立ち上げてブラウザーでネットにつないでみるなどでテストをして下さい

テザリング終了
親機のテザリングをOFFにして、Raspberry Piのpandプロセスをkillしてください。


4.x.yの場合 
これで終わればハッピーエンドだったのですが、rpi-updateコマンドでカーネルのバージョンをrpi-4.x.yアップデートすると、pandを実行した時にエラーが出ます。「Invalid Argument(22)」だったかな?

いろいろ調べた結果、BlueZプロトコルスタックが古いかららしいので、ソースを入手してコンパイルをするはめに・・・

Bluetoothのモジュールが既にインストール済みの場合は、お祓いも兼ねてすべて削除します。

# apt-get remove bluetooth bluez-utils bluez-compat blueman

そして、ここが大事。既にインストール済みの場合はbluetoothdが自動起動に設定されていますのでサービス起動設定を削除します。これをしないとbluetoothデーモンを立ち上げようとして永久に待ち状態になってしまいます。

# insserv -r bluetooth

/etc/rc0.d~rcS.dの中にSnnbluetoothまたはKnnbluetoothというファイル(シンボリックリンク)が無いことを確認します。あれば削除します。
また、/etc/init.dの中にbluetoothというファイルが残っていれば、これも削除します。

/usr/sbin 以下にbluetoothdが残っていれば、これも削除します。

# rm /usr/sbin/bluetoothd

一度リブートをして、正常に動作するかを確認して下さい。もしbluetoothdの設定が残っていて永遠に待ち状態になってしまった場合はsshでログインして設定を直して下さい。
※幸いにもbluetoothdはsshdより後に起動されるようになっていました。

古いbluetoothの環境が全て削除された後、新しいバージョンのBlueZをインストールします。

まずは最新版をダウンロードします。
https://www.kernel.org/pub/linux/bluetooth/

当時は5.33が最新だったので「bluez-5.33.tar.gz」をダウンロードします。
※bz2やxzでも同じです。

適当な場所で解凍をします。私は/usr/local/src/にダウンロードファイルを置きました。
普通は以下の作業をrootユーザ以外(piとか)で実行するのが一般的ですが、どうせ最後のインストールはsudoを使うので、ここではrootユーザで実行しています。

# tar zxvf bluez-5.33.tar.gz

bluez-5.33というディレクトリができ、その中にファイルが解凍されます。

# cd bluez-5.33

「configure」というファイルがありますので、ソースからのコンパイルをやったことがある人は、これを動かすんだなと当たりが付けられます。ですが一筋縄では行かず、必要なライブラリーが結構あります。

必要なライブラリーをインストールします
# apt-get install libusb-dev libdbus-1-dev libglib2.0-dev automake libudev-dev libical-dev libreadline-dev

この後やっとconfigureが動かせます。Raspberry Piでsystemdをdisableにするのは必須なようで、他のオプションはお好みで変更またはデフォルト値を使って下さい。

# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-library --disable-systemd

これの結果エラーが出なければやっとmakeができます。

# make

エラーが出なければコンパイル成功です。

# make install

bluetoothdが/usr/libexec/bluetooth/以下にインストールされたので、/usr/sbin以下へシンボリックリンクを張ります。
# ln -svf /usr/libexec/bluetooth/bluetoothd /usr/sbin

BlueZのコンフィグファイルをコピーします
# install -v -dm755 /etc/bluetooth
# install -v -m644 src/main.conf /etc/bluetooth/main.conf

ドキュメント類のインストール
# install -v -dm755 /usr/share/doc/bluez-5.33
# install -v -m644 doc/*.txt /usr/share/doc/bluez-5.33

ツールをコピーします。
コンパイルを実行したディレクトリ以下に testというディレクトリがあります。この中のスクリプトが大事です。testなんて謙遜しなくてもいいのに・・・
# install -v -m644 test/* /usr/local/bin


参考にしたサイトではこの後、BlueZのメインツール「bluetoothctl」を動かすとキー入力を受け付けなくCTRL-Cで終了しかできなくなるというケースがあったようです。
これはbluetoothdが起動していないからでした。

# /usr/sbin/bluetoothd &

実行後にbluetoothctlを動かすとキー入力を受け付けてくれるようになります。試しに「help」と入力してみてください。

この状態ですとhci0がUPになっていません。
# hciconfig -a hci0
おそらくUPになっていません。

# hciconfig hci0 up

# hciconfig -a hci0
ステータスがUPになりました。

毎回コマンドを実行するのは面倒なので、起動時にアップするようにします。

# /etc/udev/rules.d/10-local.rules
-------
# Set bluetooth power up
ACTION=="add", KERNEL=="hci0", RUN+="/usr/bin/hciconfig hci0 up"
-------

bluetoothdを自動起動するようにします

# vi /etc/rc.local

-------
# Start Bluetoothd
/usr/sbin/bluetoothd &
-------


ここまで終わったらリブートをしてbluetoothが使える場外になっていることを確認します。
# hciconfig -a hci0
# ps -aef | grep bluetoothd



キーボードとマウスをペアリングしてみましよう。bluetoothctl でも設定できますが、ツールのほうが簡単です。

# test-discovery -i hci0

12:34:56:78:90:12 keyboard

# simple-agent -i hci0 12:34:56:78:90:12



やっとテザリングです。
親機をペアリングします

# test-discovery -i hci0

00:11:22:33:44:55 ipad

# simple-agent -i hci0 00:11:22:33:44:55

前述の/etc/network/interfacesに bnpe0の設定を追加して下さい。

# bluez-test-network 00:11:22:33:44:55 nap &

# ifconfig bnpe0

これもスクリプト化しておけば楽です

例)start-bnpe0.sh
-------
#!/bin/bash

/usr/local/bin/bluez-test-network 00:11:22:33:44:55 nap &
-------


停止もスクリプト化するとこんな感じです。
例)start-bnpe0.sh
-------
#!/bin/bash

pkill -f bluez-test-network
-------

あまり役に立たない情報ですが、A+はUSBポートが1つしかないので、重宝するかもしれません。

 
プロフィール

kerokerodo

タグクラウド
QRコード
QRコード
  • ライブドアブログ