2021年5月20日木曜日

GROM で公道を限界まで攻める

GROM の燃料計は満タンの約 30% (1.7L, 航続距離にして 100km 以上) を切ると点滅するようになっている.その残量だとまだ給油する気にはならないが,それ以降は燃料計が役に立たないので不便.なのでガソリン残量を限界まで攻めるために,燃料計の補正をしようと思った.
ちなみにオーナーズマニュアルでは燃料計点滅時残り 1.42L って書いてあるけど (少なくとも自分の個体は) ウソ.

で最初は燃料センサの抵抗値を補正してメーター表示を補正しようと思ったが,残り 1.6L の時点で燃料センサのフロートが機械的な下限に張り付いて,それ以降はセンサの抵抗値が変化しないこと判明.なので電気的に補正するプランはボツ.

仕方ないので機械的に補正することにした.燃料ポンプ Assy を外して,

フロートの針金を力で曲げる!

タンク底にフロートがギリギリ接触しないように曲げることができた.
このようにフロートが下がるように曲げることで,より少ない残量まで計測できることになる.

ガソリンタンクを空にする機会はなかなか無いので,最後に色々データとってみた.
燃料ポンプが吸える限界残量: 130cc
燃料計点滅時のタンク内ガソリン量: 1,090cc
満タン: 5,790cc

すなわち,燃料計点滅時のガソリン残量は 1.7L→0.96L に改善した.
うーん,ホントはもっと攻めたかった (0.33L = 残り 20km くらいが理想) が,機構的な制約なので仕方がない.

2021年5月2日日曜日

GW のこうさく: ユニクロのライダースパンツを作る

自分着るものは 100% ユニクロ or しまむらなのでw,ライダースパンツとか買い揃える余裕は無い.ましてや HYOD とかクシタニとか別世界のオサレライダースブランドなど買うことさえ許されないwww
されどバイクに乗るにはそれなりの安全装備が必要で,一応バイク用のニーパッドは持っているので,これを使ってユニクロのライダースパンツを作ってみるw 

というわけでジャグヮーのソォウィング・マッスィーンを投入.初めて本格的にミシン使ってみたけど,コレすげー楽だわ.微妙に高機能でどういう縫い目が最適なのか予備知識ゼロで,仕上がりも非常に残念な感じだけどw どうせズボンの中で見えないし縫い目の強度さえあればいいので問題なし.

でこんな感じでポケットを作り,ジーンズの膝辺りに裾上げテープで接着する.ポケットは長方形なのでそのままではパッドが左右にずれてしまうので,パッドの形に沿って U 字形の縫い目を入れてある.
膝パッドはバイクに跨っている状態,つまり裾が上にずれている & 膝が外側に向いている状態で膝に当たる位置に縫い付ける必要がある (立ってる時の位置に合わせるとちょっと上すぎ & 内側すぎる).

というわけで完成.パッド位置も問題なし.
ただし,本物のライダースパンツはまたがった姿勢で布がつっぱらないよう立体裁断・縫製してあるので,ユニクロ改造パンツにそこまで期待できない.
でもまぁコケたときの安全性向上にはなるので,まぁまぁ満足ヽ(´ー`)ノ

2021年4月25日日曜日

安全すぎるのも困りもの

GROM に装着した車両接近警報装置,歩行者や自転車の方にも,遠くからこちらの存在に気づいて道路脇に避けていただいたりと,双方にとって非常に安全性が高くなったw しかしながら,お巡りさんにも気を使っていただくと大変恐縮なので,少々安全性を下げようと思った.

あーはいはい,うるさいマフラーですよ┐('~`;)┌

でこのマフラーはバッフルが内蔵されているが (バッフル外しは音量的に無理),更にバッフル内にキャップ状のパーツがある.通常このパーツはバッフルの前側に付いているが,これを後ろ側に付けることで,結果的にマフラーの抜けを絞ることになって音量が少し絞れた.
が,これだけ絞ると流石に性能的に悪影響があるんじゃ? と思ったので,いつもの県立自動車動力試験場(謎) で馬力計測してみた.その結果は...

数値上,高回転側でパワーが減っているが,多分自分では気づかないレベルなんじゃないかな.街乗りで常用する回転域では全く差がなし.ということで,音量を絞る設定で常用することにした.

これで下品な音量がちょっとはマシになる.あー早いことマフラーまともなのに変えたいw

2021年4月21日水曜日

JOG 3KJ スターターモーター分解清掃

 足車であるところの JOG 3KJ,ボアアップして以来スターターモーターがエンジンの抵抗に負けてセルスターターが効かなくなっていた.バッテリーがヘタったのかと思い電圧を測ってみたら正常.こりゃ強化スターターモーターに交換するしかないのか? と思ったが,モーターの分解清掃をするといいらしいのでやってみた.

まずはシート・メットインスペース・マフラー・後輪を外すとスターターモーターにアクセスできる.
キャップスクリュー 2本を外すとモーターが外れる.ちなみにここは路面の泥をもろにかぶる箇所で,キャップスクリューのサビがやばくなりかけだったので,後でステンレスのキャップスクリューに交換した (写真は分解清掃後なので既にきれい).

プラスネジ 2本を外すと,モーターケースが外せる.モーターケースを外すときは,シャフトとエンドベルが分離しないように外すと,エンドベルについているブラシを傷めなくていいかも.
中を開けたところ,ブラシの削れカスと思われる大量の黒い粉が出てきたので,それらの汚れを落とす.

ローターのコミュテーター (ブラシが接するところ) を #2000 番の紙やすりで磨き,コミュテーターの溝の汚れを爪楊枝で清掃.
あとは各部をグリスアップして組み付けて完了.

で効果の程は...
やる前は掃除程度で治るわけ無いやん,と正直懐疑的だったが,組み付け後のスターターモーターの勢いがびっくりするくらい変わったw 例えると死にかけのバッテリーから新品バッテリーに変えたくらいの違いがでた.当然ながらセルスターターでのエンジン始動も全く問題なくなったヽ(´ー`)ノ

バッテリー変えてもセルモーターが弱くなったと感じたら,モーターの分解清掃はオススメ.

最後に 3D プリンタで作った原二エンブレムw を貼り付けてこの日の整備は完了.

2021年4月2日金曜日

GROM 社外 LED ウインカー取り付け

転倒で折れたウインカーを,アリエクの LED ウィンカー (送料込み¥1,494) に交換した.

で届いたのを見てみたら配線が 1本取れてたwww まぁプロ・アリエクスプレサーの自分にとってこんなことは日常茶飯事なので,サクッと分解してはんだ付け直して,ショップに ★5 付けておいたwww
で早速取り付け.まずリア側をバラすと,ウインカー取り付け穴が大きくてそのままではつかない.
なのでノーマルの取付プレートにカーボン柄シートを貼って取り付けた.またこの LED ウインカーにはギボシ端子が付けられているので,リアに関しては配線の加工は不要.
またポジションとして赤 LED が内蔵されているので,これは ACC 電源から取る.赤ポジションはウインカー (黄) 点灯時は消灯する.

あと,このウインカーは根本がゴムなのでナットをいくら締めてもゴムが変形するだけで,要するにウインカーが回転しないトルクでナットを締めることができない.なのでナット締めるのはそこそこにして緩まないようにネジロック剤を塗った.ゴムの抵抗があるので振動で回ることはなさそう.

次にフロント側.こちらもゴムマウントを外すと大きな穴になっていた.F 側には流用できそうなノーマルプレート等がないので,社外品で売ってないかな? と思って探してみたら,しょーもないプラパーツが¥900!!
あほらしすぎたので,3D プリンタでマウントパーツを作成して (thingiverse で 3D データ公開してます),

困ったときの必殺カーボン柄シート貼り.

F 側の配線はキタコのコネクター (これこれ) をつけて,車体側の配線は無加工で取り付けたところ,ポジションに関して光り方が変 (※) なので,ポジションに関しては ACC 電源から取り直した.
※ポジションの電源が ON になる度,つまりウインカースイッチを入れる・解除する度にポジションがシーケンシャル動作するので,ウインカー (黄) のシーケンシャル動作と紛らわしくて危険.

ウィンカーリレーはアリエクのこれ
で完成.
もともとシュレックの耳みたいなダサいノーマルウインカーが,スッキリしてかなり格好よくなった.

シーケンシャルウインカーで光り方もモダンになる.あとポジションランプ (白) 付き.
あと付け根がゴムなので,次コケても折れる心配がない.

かなり満足度が高い一品ヽ(´ー`)ノ
 

2021年3月27日土曜日

GROM 転倒修理

なんてことのないカーブで路面の砂に乗ってコケた(;´д⊂)バイクはこれがあるから怖い.

で,損害評価を実施したところ,  
・マフラーカバー傷
 →後日交換した
・ウインカー折れ (写真は応急処置後.根本のプラスチックが欠けている)
・ウインカーレンズ傷
 →後日交換した

GROM のウィンカーはコケたら必ず折れる構造になっているのはいただけない.
・フロントフェンダー傷
・ミラー傷
 →後日交換した

あれ? 意外と被害は少なかった.
フロントフェンダー以外はどれもカスタムで交換するパーツの定番で,そのうち変えるつもりなので問題なし.

フロントフェンダーの傷も軽微っちゃ軽微なんだけど,マット塗装なので磨いて傷を消すわけにも行かないので交換することにした.が,ホンダディーラーから部品を買うとめちゃめちゃ高い.で,アリエクでフロントフェンダーを送料込み¥4,142 で売っているのを発見.写真では純正モノに見えて,こんなニッチなパーツをコピーなんかしないっしょ,と思ったのでポチッとな.

で届いたのを見たところ,モノは純正と全く変わらないように見えて,金型の筋等も全く同じなんだけど,細かい刻印の字とかが違う.
塗装はショップが独自に塗装しているようだが,マットブラックに関しては純正色と殆ど変わらない.
と思ったら,裏塗ってねぇじゃん
(;´д⊂)まぁ裏はどうでもいいとして,端も色が乗ってない.これはちょっといただけないので,缶スプレーで端っこと裏を適当に塗装した.
でフェンダー交換.
バイクスタンド的なものは持ってないので,ラッシングベルトで吊り下げてタイヤを外す.

でボルトで固定しようと思ったら,明らかにボルト穴の径が狭かったので,ドリルで広げる必要がある.結局の所このフェンダーは純正ではなかったようだが,ボルト穴広げた以外は取り付け精度等は全く問題なかった.見た目も裏の刻印以外は違いを見つけられないくらい,純正と変わりなし.

まぁひと手間かかるけど安く修理できたので満足
ヽ(´ー`)ノ
 

2021年1月9日土曜日

OpenWRT PPTP サーバで LAN リソースにアクセス

外出先から家 LAN にアクセスできるよう,OpenWRT で PPTP サーバを立ち上げた.
手順はここに載ってる通りで,Android -> OpenWRT -> WAN という経路はあっさり繋がったけど,家の LAN にぶら下がってる機器には一切アクセスできない.こんなんみんな困ってるはずと思ってググってみたけど,困ってる書き込みはあったものの解決策の書込みがなさげ.なので拙いネットワーク知識をフル動員して自力で解決してみる.

まず Android から OpenWRT の PPTP サーバに繋ぐ前の,ルータのネットワークはこんな感じ.

WAN ---(nat)-----[OpenWRT]----- br-lan --------- LAN 配下の PC 等
(10.0.0.0/8)                   (192.168.0.1)    (192.168.0.0/24)

Android から OpenWRT の PPTP サーバに繋ぐと,ppp1 が現れて以下のようになる.

WAN ---(nat)-----[OpenWRT]--+-- br-lan --------- LAN 配下の PC 等
(10.0.0.0/8)                |  (192.168.0.1)    (192.168.0.0/24)
                            +-- ppp1 ----------- android
                               (192.168.0.31)   (192.168.0.32)

この状態で Android で発生したパケットは ppp1 に投げられて WAN には出るものの,br-lan には伝わらない.

●作戦1
上の状態で br-lan のブリッジに ppp1 を含めたら行けるはずと思ったけど,ppp1 は PPTP サーバに接続・切断するたびに生成・消滅するので,OpenWRT ブート時に bridge することができない.PPTP サーバに接続・切断する度に bridge 構築する何かコマンドを実行できればいいんだけど,設定を眺める限りそういう機能もなさげ?

ということで失敗.

●作戦2

WAN ---(nat)-----[OpenWRT]--+-- br-lan --------- LAN 配下の PC 等
(10.0.0.0/8)                |  (192.168.0.1)    (192.168.0.0/24)
                            +-- ppp1 ----------- android
                               (192.168.1.1)    (192.168.1.2)

ppp1 のサブネットを LAN と違うものにする.
LAN / ppp1 それぞれ自サブネットでない宛先パケットは一旦 OpenWRT に投げられて,OpenWRT はすべてのサブネットのルーティングを知っているはずだから,LAN <--> ppp1 のルーティングを適切に行なってくれるはず,と予想.

実際は,LAN --> android の ping は通ったが,android --> LAN の ping が通らなかった.
br-lan まではパケットが流れていそうなことは見えたが,br-lan 配下の PC まで何故かパケットが届いていない.

頑張れば行けそう感があるものの,解析が難航したので諦めた.

●作戦3
WAN --- LAN が NAT を介して接続しているように,LAN --- ppp1 を NAT を介して繋げばいいのでは,と以下のようにしてみた.

WAN ---(nat)-----[OpenWRT]--+-- br-lan --------- LAN 配下の PC 等
(10.0.0.0/8)                |  (192.168.0.1)    (192.168.0.0/24)
                            +---(nat)--- ppp1 ----------- android
                                        (192.168.1.1)    (192.168.1.2)

これがビンゴ! 無事 android から LAN 機器が見えるようになった.

でこれを実現するために iptables で nat テーブルの POSTROUTING チェインに -j MASQUERADE を追加すれば良い.OpenWRT ではカスタムルールを追加するために postrouting_rule チェインが用意されているので,これに追加することにする.

OpenWRT の Network→Firewall→Custom Rules に図のようなコマンドを入力することで実現できる.

2020年12月27日日曜日

SMTPs / POPs ゲートウェイを立てる

 ウチの HDD 録画機であるところの VARDIA RD-S1004K,ネット録画予約するにはメールを介してやり取りするが,古い機種なので SMTP-AUTH / SMTP over SSL / POP over SSL にことごとく対応していない.
プロバイダが提供するメールサーバはこれらが必須になったので,ローカルでメールサーバを立てようかと思ったけど,メールサーバは非常に管理がめんどくさい.
なので素の SMTP / POP を SMTP-AUTH over SSL (SMTPs) / POP over SSL (POPs) に変換するゲートウェイを立ててメール処理自体は gmail のメールサーバに丸投げすることにした.

で,* over SSL の部分は,stone で以下のようにすれば実現できる.

stone smtp.gmail.com:465/ssl 10025 -- pop.gmail.com:995/ssl 110
これで少なくとも POPs に関しては,stone を実行しているマシンのポート 110 で POP アクセスできる.

次に SMTP を SMTP AUTH に変換する簡単なゲートウェイプログラムを作った.→GitHub
SMTP AUTH のプロトコルはググれば色々出てくる.
これを上記 stone と同じサーバに仕掛けて以下のような経路を作ると,

port25 → [SMTP AUTH GW] → port10025 → [stone] → gmail smtp (port993)
port 25 で受けた素の SMTP プロトコルを SMTPs に変換して gmail smtp サーバに転送する.

試しに telnet で手動でメール投げてみた.

  [yoshi@rafale ~]# telnet ag300h 25
  Trying 192.168.0.254...
  Connected to ag300h.
  Escape character is '^]'.
  220 smtp.gmail.com ESMTP y23sm35522980pfc.178 - gsmtp
* EHLO hoge.com
  250-smtp.gmail.com at your service, [xx.xx.xx.xx]
  250-SIZE 35882577
  250-8BITMIME
  250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
  250-ENHANCEDSTATUSCODES
  250-PIPELINING
  250-CHUNKING
  250 SMTPUTF8
* MAIL FROM: <yyyy@gmail.com>
  250 2.1.0 OK y23sm35522980pfc.178 - gsmtp
* RCPT TO: <xxxx@gmail.com>
  250 2.1.5 OK y23sm35522980pfc.178 - gsmtp
* DATA
  354  Go ahead y23sm35522980pfc.178 - gsmtp
* From: yyyy@gmail.com
* To: xxxx@gmail.com
* Subject: TEST
* 
* test mail
* .
  250 2.0.0 OK  1609073620 y23sm35522980pfc.178 - gsmtp
* QUIT
  221 2.0.0 closing connection y23sm35522980pfc.178 - gsmtp
  Connection closed by foreign host.
  [yoshi@rafale ~]#
行頭が * の行が手入力した行.暗号化は stone がやってくれるので telnet で素のテキストでやり取りできるし,EHLO コマンドを投げたあと裏では SMTP AUTH 認証が走っているので,MAIL コマンドが受け付けられているのがわかる.

これで RD-S1004 が延命できたヽ(´ー`)ノ

2020年12月26日土曜日

OpenWRT で stone-ssl を動かす (2020年版)

Buffalo WZR-HP-AG300H で DD-WRT を動かしていたけど,DD-WRT はもう長らく開発が止まってるので,OpenWRT の最新版を入れた.
で stone をクロスコンパイルしてこれで動かしてみる.
下記修正を行ったものを GitHub で公開しているので,欲しい人はどうぞ. https://github.com/yoshinrt/stone
の branch: ag300h

●環境
ハード: Buffalo WZR-HP-AG300H
OpenWRT: 19.07.5 r11257-5090152ae3 / LuCI openwrt-19.07 branch git-20.341.57626-51f55b5
stone: 2.3e

●以下の手順通りに OpenWRT ビルド環境を構築
https://openwrt.org/docs/guide-developer/quickstart-build-images

●環境変数の設定
export OPENWRT_DIR=~/openwrt
export PATH=$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/bin:$PATH
export STAGING_DIR=$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl
●openssl のビルド
OpenWRT の toolchain でビルドされる openssh は 1.1.1i で stone の想定と合っていないので,旧 ver. をビルドして static link するのが楽.
1.0.2u なら無理なく通せそうなので,これ持ってきて configure, make.
./Configure linux-mips32 --prefix=/usr --libdir=lib \
  --openssldir=/etc/ssl --cross-compile-prefix="mips-openwrt-linux-musl-" \
  -I$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/usr/include \
  -I$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/include/fortify \
  -I$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/include \
  -L$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/usr/lib \
  -L$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/lib \
  -znow -zrelro -Wl,--gc-sections shared enable-weak-ssl-ciphers \
  enable-ssl enable-ssl2 enable-ssl2-method enable-ssl3 enable-ssl3-method \
  -DOPENSSL_PREFER_CHACHA_OVER_GCM -DOPENSSL_SMALL_FOOTPRINT
make
キモは SSLv2, SSLv3 あたりを有効にしないと,stone リンク時に SSLv2_server_method(), SSLv3_server_method() が無いと怒られる.

●AG300H 用の make エントリ作成
TOOLDIR_AG300H = $(OPENWRT_DIR)/staging_dir/target-mips_24kc_musl
ag300h:
    $(MAKE) CC="mips-openwrt-linux-musl-gcc" CFLAGS="$(CFLAGS) -D_GNU_SOURCE \
        -I$(TOOLDIR_AG300H)/usr/include -L$(TOOLDIR_AG300H)/usr/lib" \
        FLAGS="-O -Wall -DPTHREAD -DUNIX_DAEMON -DPRCTL $(FLAGS)" LIBS="-lpthread $(LIBS)" stone
    mips-openwrt-linux-musl-strip stone

ag300h-pop:
    $(MAKE) CC="mips-openwrt-linux-musl-gcc" TARGET=ag300h pop_stone

ag300h-ssl:
    $(MAKE) CC="mips-openwrt-linux-musl-gcc" CFLAGS="-static -I./openssl/include -L./openssl" \
        SSL_LIBS="-lssl -lcrypto" TARGET=ag300h ssl_stone
基本的に fon あたりをコピーして修正するのが楽.

というわけで,AG300H に持っていって動いたヽ(´ー`)ノ
SSLv2, SSLv3 もちゃんと組み込まれている.
root@ag300h:~# stone -h ssl
Dec 26 17:33:25.671984 6325176 stone 2.3e  http://www.gcd.org/sengoku/stone/
Dec 26 17:33:25.673056 6325176 Copyright(C)2007 by Hiroaki Sengoku 
Dec 26 17:33:25.675053 6325176 using OpenSSL 1.0.2u  20 Dec 2019  http://www.openssl.org/
opt:  -q             ; SSL client option
      -z             ; SSL server option
SSL:   default            ; reset to default
 (略)
       tls1               ; just use TLSv1
       ssl3               ; just use SSLv3
       ssl2               ; just use SSLv2
       no_tls1            ; turn off TLSv1
       no_ssl3            ; turn off SSLv3
       no_ssl2            ; turn off SSLv2
 (略)

2020年12月18日金曜日

古い Android 端末を Linux サーバとして復活させる

ちょっとしたサーバを立ち上げる必要が出てきたので,余ってて使いみちがない GalaxyNote SC-05D で Linux 環境を構築することにした.そういうことをするための UserLAnd というアプリがあるが,SC-05D は Android 4.1 と古く UserLAnd が入らないので,それの昔のバージョンである GNURoot を入れる.

あとは sshd を立ち上げてしまえばあとはなんとでもなるが,GNURoot のメンテはもう終わってるらしく,色々環境を修正しないといけない.


(1) apt 環境修正
apt-get update が 404 になるので,/etc/apt/sources.list を修正

root@localhost:~# cat /etc/apt/sources.list
deb http://archive.debian.org/debian/ wheezy main contrib non-free
deb-src http://archive.debian.org/debian/ wheezy main contrib non-free
root@localhost:~# apt-get update
root@localhost:~# apt-get upgrade
(2) sshd インストール,環境修正
root@localhost:~# apt-get install openssh-server
root@localhost:~# passwd                ← root パスワード変更

/etc/ssh/sshd_config の以下を修正
Port 10022
UsePrivilegeSeparation no
PermitRootLogin yes

root@localhost:~# service ssh restart   ← sshd 起動
で PC から WinSCP を使って GNote にファイル転送したところ,大きいファイルが GNURoot 環境で読めない & 消せないファイルが出来上がって困ったが,WinSCP の設定を図のとおりにすることで改善した.

ちょっと使ってみたところ限りなく普通の Linux に近い.なんと言っても apt でビルド済みのパッケージがインストールできるので,非常に使い勝手が良い.
余ってる Android 端末の活用方法としてはありなんじゃないだろうか.