以前から気になっていたブリヂストンのワンタッチピクニカをヤフオクで入手しました!
この自転車の存在を知ったのは漫画「並木橋通りアオバ自転車店 第2巻 2話」 です。発売が1981年ごろらしいので、初期型だと30年以上前の製品です。
初めて利用したヤフオクでしたが、出展した方のおかげでスムースに取引出来ました。多謝!
それで、落札したのがこれです!
速攻でバラしたので、これしか残っていません・・・・
では、細部を見ていきましょう。まずはタイヤ。ぱっと見はそれほど劣化していないですが、よく見ると結構亀裂が入っています。多分チューブもダメでしょうね。
そしてキャリパーブレーキ。あ~ 磨けばなんとかなるかなぁ? シューは交換だ。
最後はハンドル。ゴリゴリ重いので、ヘッドパーツ交換だ。
というわけで、フルレストア決定! これは大掛かりになるなぁw
前から自転車をフルレストアしたいと思ってたので、ちょうどいい機会です。先達さんの知恵をググりながらやっていきます!
この自転車の存在を知ったのは漫画「並木橋通りアオバ自転車店 第2巻 2話」 です。発売が1981年ごろらしいので、初期型だと30年以上前の製品です。
ご存じない方にはこれを見ていただきたいです。レトロちっくで可愛いと思いませんか?
初めて利用したヤフオクでしたが、出展した方のおかげでスムースに取引出来ました。多謝!
それで、落札したのがこれです!
速攻でバラしたので、これしか残っていません・・・・
では、細部を見ていきましょう。まずはタイヤ。ぱっと見はそれほど劣化していないですが、よく見ると結構亀裂が入っています。多分チューブもダメでしょうね。
そしてキャリパーブレーキ。あ~ 磨けばなんとかなるかなぁ? シューは交換だ。
最後はハンドル。ゴリゴリ重いので、ヘッドパーツ交換だ。
というわけで、フルレストア決定! これは大掛かりになるなぁw
前から自転車をフルレストアしたいと思ってたので、ちょうどいい機会です。先達さんの知恵をググりながらやっていきます!
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 &
そんな技があるとは知らなかったのですが、どうやら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つしかないので、重宝するかもしれません。
これもスクリプト化しておけば楽です
例)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コード