ジャンル不定の日記です。

XR819でハマった・・・

Orange Pi Zero LTSをSPIフラッシュとXR819対応でlinux,u-boot,Buildrootの作り直ししたがXR819を使うのにかなり苦戦した。

XR819のビルドは前回の記事のやつ。

5時間以上試行錯誤したと思うが、
結果的には、ルーター(R1)側の /etc/wpa_supplicant.conf が、
network={
  mode=2
  ssid="SSID"
  key_mgmt=WPA-PSK
  psk="パスフレーズ"
}
で、proto,pairwise,groupとか設定しちゃうとダメぽい。(というか、設定がXR819対応したものならいいんだろうがちょっとわかんない)
元々pairwiseがCCMPだと不安定な感じだったのでTKIPを設定してた。
XR819のgitにWPA2のみ対応でWPA1がだめとか書いてあるのでCCMPとか試したがダメで、何も書かないといけた。

udhcpcでIPアドレスの取得ができず、staticも無理でルーター側にもログでないのでつながってない感じだったんだが、
クライアント側にはエラーが出ずですごいハマった。
# ip link set wlan0 up
しないとリンクが確認できなかったりもしたんだが、そのへんは関係ないぽい。

クライアント(Zero)側の /etc/wpa_supplicant.conf は、
network={
  ssid="SSID"
  psk="パスフレーズ"
}
で普通に。

ダメなときは、
# dmesg
[   35.739500] wlan0: authenticate with 7c:a7:b0:81:a5:6f
[   35.744945] wlan0: send auth to 7c:a7:b0:81:a5:6f (try 1/3)
[   35.765618] wlan0: authenticated
[   35.769316] xradio_wlan mmc1:0001:1 wlan0: disabling HT/VHT/HE due to WEP/TKIP use
[   35.780730] wlan0: associate with 7c:a7:b0:81:a5:6f (try 1/3)
[   35.789081] wlan0: RX AssocResp from 7c:a7:b0:81:a5:6f (capab=0x411 status=0 aid=7)
[   35.799978] wlan0: associated
[  302.868029] wlan0: deauthenticated from 7c:a7:b0:81:a5:6f (Reason: 2=PREV_AUTH_NOT_VALID)
[  303.843281] wlan0: authenticate with 7c:a7:b0:81:a5:6f
[  303.848662] wlan0: send auth to 7c:a7:b0:81:a5:6f (try 1/3)
[  303.864728] wlan0: authenticated
[  303.868478] xradio_wlan mmc1:0001:1 wlan0: disabling HT/VHT/HE due to WEP/TKIP use
[  303.880733] wlan0: associate with 7c:a7:b0:81:a5:6f (try 1/3)
[  303.889239] wlan0: RX AssocResp from 7c:a7:b0:81:a5:6f (capab=0x411 status=0 aid=7)
[  303.899847] wlan0: associated
こんな感じで、認証に成功してるように見えるが、「disabling HT/VHT/HE due to WEP/TKIP use」とか出てて数分おきに再認証が発生してる。

成功してるときは
# dmesg
[   16.979911] wlan0: authenticate with 7c:a7:b0:81:a5:6f
[   16.985361] wlan0: send auth to 7c:a7:b0:81:a5:6f (try 1/3)
[   17.057485] wlan0: authenticated
[   17.070765] wlan0: associate with 7c:a7:b0:81:a5:6f (try 1/3)
[   17.080267] wlan0: RX AssocResp from 7c:a7:b0:81:a5:6f (capab=0x411 status=0 aid=5)
[   17.090588] wlan0: associated
こんな感じで、「disabling HT/VHT/HE due to WEP/TKIP use」とか出ない。

Orange Pi Zero とりあえず起動した

先日届いたOrange Pi Zero LTSだが、標準の2MBフラッシュじゃLinux入らんので、R1のときのカーネルとかをSDカードに入れてXR819のモジュールだけ作って起動しようと思った。

XR819のモジュールは、AURだと https://github.com/fifteenhex/xradio になってるが、
コメント欄に https://github.com/karabek/xradio じゃないと起動しないとか書いてあった。
後者のほうが開発続いてる感じなんで後者にした。

$ git clone https://github.com/karabek/xradio.git
$ cd xradio
のあとに、Makefileの4,5行目
CONFIG_WLAN_VENDOR_XRADIO := m
ccflags-y += -DCONFIG_XRADIO_USE_EXTENSIONS
の部分をコメントアウトする必要がある。
で、
$ make ARCH=arm CROSS_COMPILE=arm-none-eabi- -C ../linux/linux-5.4.16 M=$PWD modules
とR1の時に作ったカーネルのモジュールを作ろうとしたら、
cc1: error: incompatible gcc/plugin versions
cc1: error: failed to initialize plugin ./scripts/gcc-plugins/arm_ssp_per_task_plugin.so
こんなエラー出てコンパイルできなかった。
どうも、カーネル作ったときとGCCのバージョンが変わって互換性が無くなってるみたい。
gcc-pluginsだけのリビルドはやり方わからなかったので、5.8.3でカーネルを作り直すことにした。
どうせだし、Buildrootとu-bootも作り直した。
XR819のモジュールはカーネルのリビルドしたら問題なく実行できた。

Orange Pi R1のときにまとめた情報を見ながら作ったが、
今回はカーネルのビルドはBuildroot上でやらなかったら/lib/modulesがなかったんでモジュール置くのに手動で作る必要があった。
ファームウェアは/lib/firmware/xr819以下にBuildrootが置いててくれた。
R1と共通化するためにルーター関連のアプリなんかも入れたんだが、カーネルのpppサポートを入れ忘れた。

u-bootは一応作り直したがsfコマンドが使えなかった。
menuconfigでSPIフラッシュ関連の項目があったんで設定しないとダメになったのかも。
前は include/configs/sunxi-common.h を改造してboot.scrをロードするようにしてたが、インストール後にsetenvでdistro_bootcmdを書き換えちゃえばいい気がした。

そして、buildrootでdepmod入れ忘れてたようでdepmodコマンドが使えるようになってなかった。
というわけで、再度Buildrootの必要がある感じ。
flashcpなんかはBuildrootの標準で有効になってたんでBusyboxでは入れる必要なさそうな感じ。

あと、rootパスワードも設定忘れてたんだが、パスワード設定しないとオートログインになるんだね。

工人舎SXにAtheros AR9285つけてみた

工人舎SXのwifiは、裏蓋から取り外せる位置にVIA VNT6656ってカードがついてるが不安定で頻繁に切断する。
ググるとこのデバイスかなりひどいらしい。(SXはUSBデバイス内蔵しすぎだし電圧不安定だったりするのかもしれんが)
形状はmini PCIeだがUSBデバイスなんでPCIeデバイスが利用可能なスロットかわからんかったが、ハーフサイズだがAcer aspire oneについてたカードをくっつけてみた。
ハーフサイズをフルサイズにするブラケットとか持ってないんで固定せずそのままw

そしたら認識した。
Atheros AR9285ってpcieのデバイスだった。
なので、SXの裏蓋から着脱できるmini PCIeスロットはUSBでもpcieでもOKだね。

とりあえず、セロテープで固定しといた。
しばらくAR9285使ってみる。

セリアの塗るだけ液晶保護剤でノートPCの擦り傷を修復してみた

先日買った工人舎SXの液晶によく見ると擦り傷があった件で、セリアでに売ってる液晶保護剤で目立たなくできないか?
と思ったんで買ってきた。



↑こんなやつ。


↑写真だとよくわからんが(実物でもそんな目立たないが)左下の方に縦に擦り傷がある。

で塗ってみたんだが、
最初少量を塗布してシートで拭く感じで伸ばしたが効果が感じられなかったんだが、
ドバっとかけて強く拭かずにシートを軽く接触させて伸ばす感じだと傷が見えにくくなってる感じがした。

100円だし開封後の保管もできないみたいなんで時間をかけて全量塗っちゃうことにしたが、
塗り方のコツを掴んだ感じで、
液晶を傾けたり容器のフタの棒で患部が完全に浸る感じに伸ばして、シートは拭き取る感じじゃなくて撫でる感じがいい感じ。
時間を掛けると塗装中にホコリがかかりまくるが保護材の成分は大部分が揮発性の液体で接着力は皆無なんでホコリはくっつかない感じ。拭けば落ちる。

せっかくなんで仕事中によく割っちゃうんで懐中時計も保護材塗ったりして2時間くらいかけて塗り終わった。

工人舎SX届いた

工人舎SX届いた


キーボードの上に乗ってるのがLOOX U/C40。SXの方がかなりでかいね。
下にあるのがdynabook satellite B450。

外観はディスプレイ裏にちょっと擦り傷があったのと、ディスプレイ閉じたときの接触部分のゴムクッション?が片方無かったくらい。
カバー類とかスタイラスも完備ぽくてSCのときよりは状態いい。

HDDなしだがZIFケーブルは存在して、サイドのゴムクッションも入ってた。
一応LOOX Uでうまく行かなかった変換ボード+mSATA SSDつけてみたが認識せず。
変換ボードかSSDどっちか壊れてるのは間違いないと思うんで新しいボードとかSATA変換きてからなんとかする。

内蔵デバイスも多分全部認識してる。
wifi、bluetooth、カメラ、メモリカードリーダー、ワンセグかな。全部USBデバイスで、1個USB to ATA変換が内蔵されてた。DVD用?
ただ、wifiがVIA VNT-6656ってのなんだが不安定で切断しちゃう感じ。SCもこのwifiぽいがそんなことはなかった。
で、Aspire oneのwifiと交換しようとしたらハーフサイズだったからアダプタ無いとつかない。
昔使ってたHPのノートから取り出してつけてみたら認識しなかった。(usbじゃないのかな?)
LOOX Uのwifiもpcieなはずだし、まあHDDどうにかなってから考える。
内臓でUSBデバイスがいっぱいくっつきすぎだからいけないんじゃないかということもあるか?

ワンセグはPIX-ST140ってデバイスだった。
これはLinuxドライバ無いだろうな・・・
mini pcieのLinux対応チューナーは探しても見つからんし。

キーボードも全キー認識でタッチパネルもOK。

mSATA to ZIF変換ボードの解析?

mSATA to ZIF変換ボードを回路図にしながら見てるんだが、

JM20330の18,19,20番ピンがMODEで、全部入力ピン。
19はInternal weak pull-high
18,20はInternal weak pull-low
と記載されてるんだが、これはオープンだと010になるってことか?

変換ボードの配線見ると、19番は21番とつながってるように見え、
18番と20番はオープンに見える。
Amazonに売ってるやつの商品写真見ると18番はGNDに見える。
21番はATAIOENで、
0: Disable the ATA output pins.
1: Enable the ATA output pins.
19番と同じくInternal weak pull-highなんでデフォルト1?
そうすると、変換ボードは全部デフォルトと同じと思うんだが、
MODEは、
010: Device Mode 150MB/s. (default)
になってる。
だが、Block Diagramの図を見ると、
Host Bridge(MODE=1xx)の方がPCのIDEと接続されてて、
Device Bridge(MODE=0xx)の方がATAでHDDとつながってる。
mSATAのデバイスをIDEのPCにつなぐにはHost Bridgeにするのが正しいんじゃないの?

Featuresだと、
Host BridgeにはATA/ATAPI master/slave emulation.があるがDevice Bridgeにはない。
SATAにはmaster/slaveないからPC側がSATAならエミュレートする必要がないしね。
他に機能差ないからHost BridgeとDevice Bridge逆にしても動く感じか?

MODEは、
110: Host Mode 150MB/s.
にするのが正しいと思うんだが、
データシートでピン順が20,19,18になってるのでリトルエンディアンになるのか?

JM20330を自力で使えないか・・・

うまくいかないmSATA to ZIFだが、JM20330というチップが載っててググればデータシート出てくる。
0.5mmピッチQFP64パッケージ。ZIFコネクタも0.5mmピッチかな?
仕様はそんな難しくない感じするんだが、これ自力で実装して使えないかな?
と思った。

https://pinoutguide.com/HD/zif_to_ata_pinout.shtml
↑ここに40pinZIF-ATA のピンアサイン載ってたんでちょっとデータシートと確認したが、

チップの左下にポッチがあるんでピン番号は下側から半時計回りで、
赤で記載したが左上の49番ピンがコネクタの上から6番目につながってる。
これはデータシート見るとDA2で、ZIFのピンアサインで34番に相当する。
下にもう一個記入したが、15番ピンのDD7の方はコネクタの下から5番目につながっててZIFの5番。

なんで、コネクタの下側が1番ピン。
だが、ZIFのケーブルってどっちが1番だかわからんよね?
というわけで確認したが、


ケーブルの端子側が上で左の方に矢印つけたが、小さくてよくわからんが「1」と書いてあるような感じがする。
ケーブルのプリント見ても、左側は端から2本オープンになってて反対側は1本オープンで隣の2本がつながって太くなってる。
ZIFのピンアサインで1,2番は未使用で40番も未使用。38,39が共に3.3Vなんでプリントと一致するね。
なので、この画像でコネクタの左側が1番ピンと思われるのでケーブルは端子側が上になる感じであってるね。
普通端子が下で固定しちゃうよね・・・
画像のケーブルの向きは本体に接続すると裏表逆になるんで、やはり変換ボードはひっくり返して装着する感じぽい。

mSATA to ZIF変換ボード

先日LOOX UのSSD化に失敗してSSDと変換ボードをフリマに出そうとした際に気づいたが、

↑右側の3番目と4番目のピンブリッジしてることに気づいた。
でブリッジ解消したんだがダメ。

で動作確認できてない状態で評価落としそうな気もしたが結局フリマに一旦出したんだが、
もう一個HDDなしのノートPCで気になるのあったから入札して、LOOXが壊れてる可能性もあるし、そもそもLOOXのケーブル形状にも問題があったから、
別PCで試してみたいんで出品取り消した。

そして調べたんだが、コネクタ形状違うが同じ様に逆接しちゃう人は多いみたいで、逆接しても壊れないぽい?
コネクタ形状は世間のと違うんだが、コネクタの厚みと差し込み加減がかなり難しいみたいで、
またZIF to SATA変換ボード使ってデスクトップで試そうと思った。

で変換ボード眺めたんだが、


↑mSATA端子のランドが白くなってる部分、ピンが浮いてはんだ付けされずにオープンになってるんだけどこれ正常なの?
ググって出てくる写真だと全部ついてるように見えるし、ピンから配線は出てるように見えるが・・・

やっぱこのボード怪しい・・・

LOOX UにCFカード

LOOX U/C40のSSD化に失敗したわけだが、
ExpressCardスロット使ってストレージつけられないか?
思ったんだが、LOOX UはExpressCard無かった。ついてたのは工人舎SCだっけか?

だが、LOOX U/C40にはコンパクトフラッシュとSDがある!これ使えばいいじゃん!!
ということに気づいた。

コンパクトフラッシュの規格を調べたが、PATAのカード版みたいなんで速度出るカード使えば1.8インチのZIFでつなぐのと変わらんね。
CFは0.15MB/s単位で倍率表記らしく、1113倍の167MB/sまで製品が存在するらしい。
LOOX U/C40のATAは100なんで666倍のCFカードで限界。
Aliexpressの新品だと160MB/sの32GBで2000円オーバーは行く感じ・・・
フリマだと60MB/sの16GBで1000円くらい狙えそう。

まあ、とりあえずSDスロットもあることだし、
ちょうど先日ラクマのクーポンで32GBのSDカード買ったんでSDにLinux入れることにした。

が、気づいたが、LOOX UはSDブートができない・・・
そして、CFはブートできるのか調べたが、LOOX UのCFは直ATAじゃないの?なんかクソ遅いらしい・・・

prusa-slicerでG-CODE変換とコードを眺めてみた

OpenSCADで図形作って、3Dプリンタ買っちゃおうか考えてたが、
可動部品の多い機械で壊れやすそうだし、デカイから壊れたときに直せなかったら捨てるのも難しいし困る。
市販品買っちゃうと壊れたときに直すのも難しいだろう。
安いのでも2万くらいするからゴミになったら痛いし。
あと、安い3DプリンターってwifiなしでSDカードかUSBケーブルで接続するんだよね。wifiで制御したい。

というわけで、OpenSCADで簡単な図形を作ってG-CODEに変換して、
G-CODEが理解できそうならやっぱ木かなんかそこらで入手できる安い素材で構造作って簡易プリンタ自作しちゃうか。
ってことにした。

G-CODEに変換するのはスライサーってアプリで、OpenSCADでSTL形式でエクスポートしたファイルをgcodeに変換できる。
Arch Linux標準では prusa-slicer ってのと cura ってのがあった。
curaってのが有名みたいで、prusa-slicerってのはあまり情報ない感じだが、prusa-slicerはslic3rってのがベースみたいでslic3rは有名みたい。
curaの方が複雑な造形するときに良いみたいだが、slic3rは簡単ぽい。
模型作りたいとかじゃなくて箱とか部品を作りたいし、curaに比べてprusa-slicerの方が依存が少なかったんでprusa-slicerを入れてみた。

簡単な図形をgcodeにしてみたわけだが、gcodeはテキストファイル。
;の後ろは行末までコメントで、
G1 パラメータ
みたいな感じでスペース区切りで先頭が関数で続く値が引数な感じ。


M73 P0 R1
M73 P100 R0
最初のコードがM73だったが、進歩状況のようで、
最初がP0で最後にP100があってパーセントで進歩状況を設定してる。
途中経過は設定されてないから、無視して機械の方で計算しちゃっえば良さそうな気がする。

M201 X1250 Y1250 Z400 E5000 ; sets maximum accelerations, mm/sec^2
最大加速度
Eはエクストルーダー

M203 X180 Y180 Z12 E80 ; sets maximum feedrates, mm/sec
最大送り速度

M204 P1250 R1250 T1250 ; sets acceleration (P, T) and retract acceleration (R), mm/sec^2
標準加速度

M205 X8.00 Y8.00 Z2.00 E10.00 ; sets the jerk limits, mm/sec
M205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec
詳細設定
初速?

M107
ファンOFF

G90 ; use absolute coordinates
すべてを絶対座標に設定

M83 ; extruder relative mode
エクストルーダーを相対座標に設定

M104 S170 ; set extruder temp for bed leveling
エクストルーダー目標温度設定
温度が達する前に次へ。

M140 S60 ; set bed temp
ベッド目標温度設定
温度が達する前に次へ。

M109 R170 ; wait for bed leveling temp
エクストルーダー温度が達するまで待機

M190 S60 ; wait for bed temp
ベッド温度が達するまで待機

G28 ; home all without mesh bed level
原点に移動

G29 ; mesh bed leveling
Z軸を調べる?

G92 E0.0
現在位置を指定座標に設定する

G1 Y-2.0 X179 F2400
直線移動

M221 S95 ; set flow
不明
ファンの%か?

G21 ; set units to millimeters
単位をミリメートルに設定

M900 K0.2 ; Filament gcode
フィラメントの送り係数?

M84 ; disable motors
停止


こんな感じのコードが使われてた。
M系のコードは大量にあって全部網羅できないし、無視して機械の方で処理しちゃえば良い気がする・・・
プリント中はG1の直線移動が大量に並ぶ感じ。
移動と座標設定さえできれば動くものができそうな気がする。