NetBSDでUSBシリアル変換IC CH340Kを動かす
秋月電子通商で¥100で買えるUSBシリアルICのCH340KがNetBSD 10.99.3でもまだこんな感じで認識してくれなかったけど数行いじったら動くようになったよ、というお話。
ugen0: QinHeng Electronics (0x1a86) USB Serial (0x7522), rev 1.10/2.64, addr 1
動機
- 認識しないのは数ヶ月前から認識してたけど最近になってふと気になったので追ってみることにした
- CH341/CH340はuchcom(4)で実装されている……あれ?
- データシートないかなとメーカーのページに行ったらLinux向けのソースコードがあったけど、ざっと見た感じでは特にCH340K(というよりProductIDが0x7522)固有の処理はなさそう
- じゃあuchcom(4)でなんで動かんの、と思ったら0x7522が対象に入ってなかった
- もしかしてuchcom(4)に0x7522を追加すれば動くのでは……?
やったこと
まずsys/dev/usb/usbdevs
にProductIDが0x7522になるデバイスを追加する。なお手元のはCH340Kだけどどうも他のCH340シリーズも中のチップは同じらしく、そうすると名称はCH340Kで良いものか一瞬悩む。が、そういえばメーカー純正のLinuxドライバコード中でも /* ch340k chip */
だったので気にしないことに。
--- a/sys/dev/usb/usbdevs +++ b/sys/dev/usb/usbdevs @@ -2836,6 +2836,7 @@ product QINHENG CH341_EPP 0x5512 CH341 USB-EPP/SSP Bridge product QINHENG CH341_ASP 0x5523 CH341 USB-Serial Bridge product QINHENG CH341_UPC 0x5584 CH341 USB-Printer Bridge product QINHENG CH340 0x7523 CH340 USB-Serial Bridge +product QINHENG CH340K 0x7522 CH340K USB-Serial Bridge product QINHENG2 CH341SER 0x5523 CH341/CH340 USB-Serial Bridge /* Qtronix products */
次にusbdevs.h
と usbdevs_data.h
を再構築する。TOOLDIRはbuild.sh
時に-T
で指定しているところ。
$ TOOLDIR=../../../../tools/amd64 make -f Makefile.usbdevs
終了するとusbdevs.h
にUSB_PRODUCT_QINHENG_CH340K
という定義が生えてくる。
#define USB_PRODUCT_QINHENG_CH340K 0x7522 /* CH340K USB-Serial Bridge */
最後にuchcom(4)のデバイステーブルに追加しておしまい。
--- a/sys/dev/usb/uchcom.c +++ b/sys/dev/usb/uchcom.c @@ -164,6 +164,7 @@ static const uint32_t rates4x[8] = { static const struct usb_devno uchcom_devs[] = { { USB_VENDOR_QINHENG2, USB_PRODUCT_QINHENG2_CH341SER }, { USB_VENDOR_QINHENG, USB_PRODUCT_QINHENG_CH340 }, + { USB_VENDOR_QINHENG, USB_PRODUCT_QINHENG_CH340K }, { USB_VENDOR_QINHENG, USB_PRODUCT_QINHENG_CH341_ASP }, }; #define uchcom_lookup(v, p) usb_lookup(uchcom_devs, v, p)
結果
[ 8134.473206] uchcom0 at uhub1 port 1 [ 8134.473206] uchcom0: QinHeng Electronics (0x1a86) USB Serial (0x7522), rev 1.10/2.64, addr 1 [ 8134.483205] ucom0 at uchcom0
うむ。
このCH340KはESP32のライター(自作)に使用しているので、とりあえずESP32と繋いでみたところ起動メッセージは表示されるのでちゃんとUSBシリアルとして動作していそう。なおminicomだとCtrl-A Z からの H(Hang up) をしないと何もでてこないので不具合かと思ったがFT232RLを使用したESP32ライターでも同じ動作だったのでminicomの設定か何かの問題らしい。ちなみにcuだと問題なさそう。
おまけ
FreeBSDは2022年の1月と6月ので対応したのかな。
pharo-vm on NetBSD/amd64
Pharo 9のVMがNetBSD/amd64でも動かせるようになったのでメモ。
source
リポジトリは https://github.com/pharo-project/opensmalltalk-vm にあるが、こちらはVMMakerで自動生成されたコードは入っていない。自動生成させるにはpharo-vmが必要なので、「pharo-vmバイナリを作るのにpharo-vmのソースが必要で、pharo-vmのソースを作るのにpharo-vmバイナリが必要で……」という循環参照が発生する。
幸い自動生成されたコードも含めたものが http://files.pharo.org/vm/pharo-spur64-headless/Linux-x86_64/source/ にあるので、こっちから持ってくれば問題ない。ディレクトリ名に「headless」とあるけどcmakeのオプション指定で非headlessにできるので問題なし。
patch
とりあえず動くようにはなったけど、これで正解なのかは知らない。
"cmake/<OS>.cmake" を要求するので、とりあえず "cmake/OpenBSD.cmake" を "cmake/NetBSD.cmake" にコピー
backtrace(3) を使用しているので libexecinfo が必要になる
--- CMakeLists.txt.orig +++ CMakeLists.txt @@ -367,6 +367,7 @@ check_library_exists(dl dlopen "" HAVE_LIBDL) check_library_exists(dyld dlopen "" HAVE_DYLD) check_struct_has_member("struct tm" tm_gmtoff time.h HAVE_TM_GMTOFF) +check_library_exists(execinfo backtrace "" HAVE_EXECINFO) #Required by the UUID Plugin @@ -451,6 +452,10 @@ add_executable(${VM_EXECUTABLE_NAME} ${VM_FRONTEND_APPLICATION_TYPE} ${VM_FRONTEND_SOURCES}) addLibraryWithRPATH(${VM_LIBRARY_NAME} ${VM_SOURCES}) +if(${HAVE_EXECINFO}) + target_link_libraries(${VM_LIBRARY_NAME} execinfo) +endif() + # # LibFFI #
- uuidgen(2) を使用する(同時に libuuid の uuid_generate との衝突を回避)
- もともと uuidgen(2) を使用するコードがあったのでなるべくそちらを使うように頑張ったけど、やっぱり面倒だったので libuuid の uuid_generate に統一しても良いんじゃないかと思った次第。
--- CMakeLists.txt.orig +++ CMakeLists.txt @@ -374,6 +374,6 @@ check_include_files(uuid/uuid.h HAVE_UUID_UUID_H) check_include_files(uuid.h HAVE_UUID_H) -check_library_exists(uuid uuidgen "" HAVE_UUIDGEN) +check_function_exists(uuidgen HAVE_UUIDGEN) check_library_exists(uuid uuid_generate "" HAVE_UUID_GENERATE) --- plugins.cmake.orig +++ plugins.cmake @@ -77,7 +77,7 @@ addLibraryWithRPATH(UUIDPlugin ${UUIDPlugin_SOURCES}) if(WIN) target_link_libraries(UUIDPlugin PRIVATE "-lole32") - elseif(UNIX AND NOT OSX) + elseif(UNIX AND NOT OSX AND HAVE_UUID_GENENATE) #find_path(LIB_UUID_INCLUDE_DIR uuid.h PATH_SUFFIXES uuid) find_library(LIB_UUID_LIBRARY uuid) message(STATUS "Using uuid library:" ${LIB_UUID_LIBRARY})
- uuidgen(2) は native byte-order なので、 uuid_generate に合わせて big endian に強制する
- やっぱり uuid_generate に統一したほうが楽そう
--- plugins/UUIDPlugin/common/UUIDPlugin.c.orig +++ plugins/UUIDPlugin/common/UUIDPlugin.c @@ -41,6 +41,9 @@ #if defined(HAVE_UUIDGEN) uuidgen(&uuid, 1); + uuid.time_low = htobe32(uuid.time_low); + uuid.time_mid = htobe16(uuid.time_mid); + uuid.time_hi_and_version = htobe16(uuid.time_hi_and_version); #else uuid_generate(uuid); #endif
- clone(2) と名前が衝突したので、とりあえず sqclone へ変更
--- generated/64/vm/src/gcc3x-cointerp.c.orig +++ generated/64/vm/src/gcc3x-cointerp.c @@ -1068,7 +1068,7 @@ extern sqInt classUnsafeAlien(void); static void clearLeakMapAndMapAccessibleFreeSpace(void); static sqInt NoDbgRegParms cloneInOldSpaceforPinning(sqInt objOop, sqInt forPinning); -extern sqInt clone(sqInt objOop); +extern sqInt sqclone(sqInt objOop); extern sqInt compactClassIndexOf(sqInt objOop); static sqInt NoDbgRegParms copyObjtoAddrstopAtsavedFirstFieldsindex(sqInt objOop, sqInt segAddr, sqInt endSeg, sqInt savedFirstFields, sqInt i); extern void countMarkedAndUnmarkdObjects(sqInt printFlags); @@ -46834,7 +46834,7 @@ /* SpurMemoryManager>>#clone: */ sqInt -clone(sqInt objOop) +sqclone(sqInt objOop) { DECL_MAYBE_SQ_GLOBAL_STRUCT sqInt classIndex; sqInt classIndex1; @@ -54408,14 +54408,14 @@ clone1 = (((longAt(obj1)) & (classIndexMask())) == ClassMethodContextCompactIndex ? cloneContext(obj1) - : clone(obj1)); + : sqclone(obj1)); if (!(clone1)) { error("Not enough space to copy the objects in two-way become. This should have been detected before"); return; } clone2 = (((longAt(obj2)) & (classIndexMask())) == ClassMethodContextCompactIndex ? cloneContext(obj2) - : clone(obj2)); + : sqclone(obj2)); if (!(clone2)) { error("Not enough space to copy the objects in two-way become. This should have been detected before"); return; @@ -75835,7 +75835,7 @@ else { if ((GIV(argumentCount) == 0) || (!(((longAt(rcvr)) & ((classIndexMask()) - (isForwardedObjectClassIndexPun()))) == 0))) { - newCopy = clone(rcvr); + newCopy = sqclone(rcvr); } else { newCopy = 0;
--- src/debugUnix.c.orig +++ src/debugUnix.c @@ -16,6 +16,12 @@ #endif +#if __NetBSD__ + +#include <ucontext.h> + +#endif + #ifdef HAVE_EXECINFO_H # include <execinfo.h> @@ -250,6 +256,20 @@ regs->mc_edi, regs->mc_edi, regs->mc_ebp, regs->mc_esp, regs->mc_eip); return regs->mc_eip; +#elif __NetBSD__ && __x86_64__ + __greg_t *regs = &uap->uc_mcontext.__gregs; + fprintf(output, + "\trax 0x%08llx rbx 0x%08llx rcx 0x%08llx rdx 0x%08llx\n" + "\trdi 0x%08llx rsi 0x%08llx rbp 0x%08llx rsp 0x%08llx\n" + "\tr8 0x%08llx r9 0x%08llx r10 0x%08llx r11 0x%08llx\n" + "\tr12 0x%08llx r13 0x%08llx r14 0x%08llx r15 0x%08llx\n" + "\trip 0x%08llx\n", + regs[_REG_RAX], regs[_REG_RBX], regs[_REG_RCX], regs[_REG_RDX], + regs[_REG_RDI], regs[_REG_RSI], regs[_REG_RBP], regs[_REG_RSP], + regs[_REG_R8 ], regs[_REG_R9 ], regs[_REG_R10], regs[_REG_R11], + regs[_REG_R12], regs[_REG_R13], regs[_REG_R14], regs[_REG_R15], + regs[_REG_RIP]); + return (void *)regs[_REG_RIP]; #elif __linux__ && __x86_64__ greg_t *regs = uap->uc_mcontext.gregs; fprintf(output, @@ -409,6 +429,9 @@ # elif __FreeBSD__ && __i386__ void *fp = (void *)(uap ? uap->uc_mcontext.mc_ebp: 0); void *sp = (void *)(uap ? uap->uc_mcontext.mc_esp: 0); +#elif __NetBSD__ + void *fp = (void *)(uap ? _UC_MACHINE_FP(uap) : 0); + void *sp = (void *)(uap ? _UC_MACHINE_SP(uap) : 0); # elif __OpenBSD__ void *fp = (void *)(uap ? uap->sc_rbp: 0); void *sp = (void *)(uap ? uap->sc_rsp: 0);
- 起動スクリプトで LD_LIBRAY_PATHに @pkglibdir@ (後で /usr/pkg/lib に置換)を追加
--- packaging/linux/bin/launch.sh.in.orig +++ packaging/linux/bin/launch.sh.in @@ -18,8 +18,8 @@ *) PLUGINS="`pwd`/$BIN" esac -if [ $(uname -s) = "OpenBSD" ]; then - LD_LIBRARY_PATH="$PLUGINS:${LD_LIBRARY_PATH}" exec $GDB "$BIN/@VM_EXECUTABLE_NAME@" "$@" +if [ $(uname -s) = "OpenBSD" -o $(uname -s) = "NetBSD" ]; then + LD_LIBRARY_PATH="$PLUGINS:@pkglibdir@:${LD_LIBRARY_PATH}" exec $GDB "$BIN/@VM_EXECUTABLE_NAME@" "$@" fi # On some linuxes there multiple versions of the C library. If the image uses
cmake option
-DFLAVOUR=CoInterpreter
: デフォルト値と同じだけどJenkinsfileが指定してたので。-DALWAYS_INTERACTIVE=1
: 非headlessなVMが必要な場合に指定する。これもJenkinsfileで指定されていたので。-DGENERATE_SOURCES=OFF
: ソースの自動生成を行わなくする。-DPHARO_BIN_LOCATION=${PREFIX}/lib/pharo
起動スクリプトがここで指定されたバイナリを実行する。
after build
build/vm/*
がバイナリとライブラリ、 build/packaging/linux/bin/pharo
が起動スクリプトなので適当に回収する。
なお build/vm/pharo
はJITで動く関係か paxctl -m
で PaX MPROTECT を解除しておく必要がる。
NetBSDから Brother DCP-J963N で印刷する
家で使用している Brother DCP-J963N はドライバのソースが非公開で gimp-printのようなオープンなドライバも無かったので、印刷する時は毎回Windowsを起動させていたのだが、どうやらAirPrintに対応しているのでCUPSから動かせるらしいと聞いて試してみたらうまくいったのでメモ。
参考文献
Debian + CUPS + avahi で Brother DCP-J973N を動作させている例。最初はこちらの通りに進めてみたけど印刷時に「見つかりません」になってしまったのであきらめた。
NetBSD + CUPS + mdnsd で EPSON EW-M752T。実はこっちを見て mdnsd(8) の存在を知ったりする。
CUPSの起動
いつものpkgsrcからインストール。
cd pkgsrc/print/cups
してmake package-install
cp /usr/pkg/share/examples/rc.d/cups /etc/rc.d
- /etc/rc.conf に "cupsd=YES" を追加
service cupsd start
(/etc/rc.d/cupsd start
と一緒だけど service(8) なるものがいつの間にか増えてたので使ってみた)
手元の環境だと cups-browsed
は最終的に無くても認識できたけど、キャッシュが残っていた可能性もあるので本当に必要ないかどうかは不明。
mdnsdのインストール
- /etc/nsswitch.conf の "hosts:" の末尾に "mdnsd" を追加
- /etc/rc.conf に "mdnsd=YES" を追加
service mdnsd start
- プリンタの電源を入れた状態で
ippfind
と入力して何か出たらOK(今回は ”ipp://BRW40B89A423C96.local:631/ipp/print” と出た)
この1.の nssswitch.conf の追加をしないとCUPSで名前の取得まではできるけども、印刷してみると「見つかりません」で印刷できないという状態になった。 それから net/avahi は無くても良いらしい。
CUPSの設定
- Firefoxで "http://localhost:631" にアクセス
- 「管理」 → 「新しいプリンターの検索」
- しばらく待つと「Brother DCP-J963N (Brother DCP-J963N)」という全く同じ項目が2つ出る
- どっちが良いのかわからなかったのでとりあえず上(dnssd)を選択して進める
- 名前とかもそのまま
- メーカーは「Generic → Generic IPP Everywhere Printer (en)」
- デフォルトオプションの設定は無変更で「デフォルトオプションの設定」ボタンを押して完了
テスト印刷
CUPSから「テストページの印刷」をやったら印刷はできたものの左右両端の線が出なかった(印刷可能範囲を越えたかな?)が、その辺は次に印刷が必要になったときに考えよう(ぉぃ
Raspberry Pi 2B(v1.1)でカメラを試す
NetBSDでRaspberry Piのカメラ使えるのかなーと手元に余ってたRaspberry Pi 2B(v1.1)でちょっと試してみた。
カメラの撮影で使われる raspistill などはpkgsrcの misc/raspberrypi-userland で用意されているようなので、まずはこれをインストールする。microSDのスペックにも依存しそうだが、手持ちの環境でMAKE_JOBS=3
でビルドさせると大体10時間くらいかかる模様。なおswapなしでMAKE_JOBS=5
で走らせるとcmakeのところでメモリ不足になって死ぬので注意。
で、インストールまで行ってもそのままでは raspistill の実行に失敗する。色々調べたところ vcgencmd (これも misc/raspberrypi-userland に含まれている)でカメラの状態を確認できるらしいが、実行してみるとどうもカメラサポートが無効になっているとのこと。
armv7# vcgencmd get_camera supported=0 detected=0
じゃあどうやってカメラサポート有効にするのかとまた色々探し回ったところ、 /boot/config.txt に以下の2行を追加すれば良いらしい。
gpu_mem=128 start_x=1
前者は名前からなんとなくわかるとして、後者のstart_x=1
って何? と調べたら、通常の起動時では start.elf と fixup.dat を参照するところで start_x.elf と fixup_x.dat を参照させるようにするコマンドとのこと。なるほど、ところで/bootにそんなファイルないぞ?
ということで今度はファームのバイナリを探し回って、おそらくコイツのbootの下にあるやつだろうと見当をつける。念のため start.elf などと同じリビジョン(今回は0c01dbefba4
)をチェックアウトして start_x.elf と fixup_x.dat を/boot配下へコピー。リビジョンは src/external/broadcom/rpi-firmware/dist/start.elf のログを参照。
こんな作業が必要なあたり「……もしかして誰もカメラ動かした人いないんじゃね?」みたいな予感がしてくる。とりあえず見なかったことにしてファイルを/bootにコピーし、/boot/config.txt を書き換えたら再起動して再びvcgencmdでカメラ状態をチェック。
armv7# vcgencmd get_camera supported=1 detected=1
無事にサポートOKになったし検出もできてる。では準備も整ったのでいよいよ raspistill を実行。
armv7# raspistill -o hoge.jpg [ 122.1222268] uvm_fault(0x80b30a08, 6c533000, 2) -> e [ 122.1222268] Fatal kernel mode data abort: 'Translation Fault (S)' [ 122.1329515] trapframe: 0xb8e15de0 [ 122.1329515] FSR=00002805, FAR=6c533c80, spsr=00030013 [ 122.1426852] r0 =6c533c80, r1 =00000380, r2 =00000040, r3 =00000010 [ 122.1426852] r4 =80abb480, r5 =6c533c90, r6 =00000370, r7 =3395fc90 [ 122.1571841] r8 =913df940, r9 =00000370, r10=00000002, r11=b8e15e64 [ 122.1633485] r12=0000003f, ssp=b8e15e30, slr=8009a92c, pc =80097290 Stopped in pid 0.206 (system) at netbsd:armv7_dcache_inv_range+0x28: mcr p15, 0, r0, c7, c6, 1 db{0}>
RaspberryPi4 + ZFS で bonnie++ ベンチ
最初に結論:
- NetBSDのZFSは少なくともベンチマークを回せる程度の安定性はある
- さすがに raidframe RAID1 と比較すると速度もCPU負荷も分が悪い
- そもそも測定方法もいいかげんなのでぶっちゃけ話のネタ以上の意味はない
Raspberry Pi 4 と USB HDD 2台で raidframe による RAID1 と、最近になって更新された ZFS で mirror を組んだときのベンチマークを測ってみた。比較用に1台の場合も。
- Raspberry Piは小型のヒートシンクを着けただけなので、測定中のどこかの段階で発熱によるクロックダウンが起きていると思われる。
- コマンドは "bonnie++ -d <mount先> -b -u root"。
- 測定が早すぎると "+++++" という結果になる。解決には例えば "-n 256:1024:1024:16" のようにオプションで調整するように紹介しているところが多いが、実際に試したら一日経っても終わらなかったので諦めた。
- パーティションはGPTで作成。1台のとRAID1はどちらもUFS2+log。
- USB-HDD変換はAOTECH ADK-HDCASE25BKA。千石電商2号店(本店の右)でワゴン売りしてたもの。最近は見かけなくなった電源供給用のUSBプラグが生えており、Raspebrry Piで不安だった電源供給能力を回避できて実に都合が良かったりする。
- HDDは東芝 MQ04ABF100。なんかバッファー容量でけぇな?と思っていたが、おそらくSMR(シングル磁気記憶方式)による書き込み性能悪化をフォローするためなんじゃないかという気がする。つまりベンチマークのような非現実的な書き込み負荷をかけるものとすこぶる相性が悪い。
single | raidrame RAID1 | ZFS mirror | |||
---|---|---|---|---|---|
Sequencial Output | Per Character | speed | 17 K/sec | 23 K/sec | 7 K/sec |
CPU | 99 % | 99 % | 99 % | ||
Latency | 527 ms | 360 ms | 1,161 ms | ||
Block | speed | 44,554 K/sec | 47,822 K/sec | 39,870 K/sec | |
CPU | 93 % | 92 % | 89 % | ||
Latency | 3,286 ms | 1,991 ms | 57,757 us | ||
Rewrite | speed | 17,823 K/sec | 13,193 K/sec | 27,813 K/sec | |
CPU | 70 % | 44 % | 83 % | ||
Latency | 3,337 ms | 7,757 ms | 872 ms | ||
Sequencial Input | Per Character | speed | 149 K/sec | 132 K/sec | 21 K/sec |
CPU | 96 % | 85 % | 99 % | ||
Latency | 810 ms | 3,408 ms | 469 ms | ||
Block | speed | 96,631 K/sec | 88,545 K/sec | 87,687 K/sec | |
CPU | 69 % | 66 % | 95 % | ||
Latency | 182 ms | 185 ms | 158 ms | ||
Random Seeks | speed | 123.2 /sec | 121.4 /sec | 99.4 /sec | |
CPU | 22 % | 22 % | 21 % | ||
Latency | 348 ms | 486 ms | 550 ms | ||
Sequencial Create | Create | speed | 2 /sec | 296 /sec | 62 /sec |
CPU | 0 % | 57 % | 4 % | ||
Latency | 596 ms | 43,634 us | 201 ms | ||
Read | speed | +++++ /sec | +++++ /sec | 9,824 /sec | |
CPU | +++ % | +++ % | 98 % | ||
Latency | 84 us | 81 us | 16,000 us | ||
Delete | speed | 2 /sec | 784 /sec | 56 /sec | |
CPU | 0 % | 21 % | 5 % | ||
Latency | 640 ms | 22,506 us | 300 ms | ||
Random Create | Create | speed | 35 /sec | 295 /sec | 61 /sec |
CPU | 8 % | 56 % | 4 % | ||
Latency | 491 ms | 49,918 us | 285 ms | ||
Read | speed | +++++ /sec | +++++ /sec | 10,041 /sec | |
CPU | +++ % | +++ % | 97 % | ||
Latency | 51 us | 72 us | 14,300 us | ||
Delete | speed | 37 /sec | 525 /sec | 46 /sec | |
CPU | 5 % | 46 % | 4 % | ||
Latency | 279 ms | 71,794 us | 329 ms |
RaspberryPi4にNetBSD/aarch64を試す (2)
昨日動かねーって書いたら早速情報を頂きました。ありがとうございます。
多分currentだと https://t.co/uHf11JxQ9h が必要かと。 https://t.co/5OKFkRvWxU
— ringoroid (@rin5roid) 2020年2月10日
https://t.co/ksIg6zdCQK これどうですか(試してない
— Jun Ebihara (@ebijun) 2020年2月11日
ということで rpi4-acpi.tgzをFATパーティション(うちの環境だと/dev/sd1e)に展開。てっきり中身はカーネルイメージかと思っていたんだけど、中身はこれだけだった。
これカーネルイメージだったらuserlandも同じバージョンのものを用意しないとなー、と思っていたんだけども、どうやらそのままで良さそうなので昨日ダウンロードしてきた9.99.46の上にぶちまけて電源投入。…あれカーネル起動までの挙動が違う?と思ったらUEFIかなこれ? そして無事にmicroSDを/dev/ld0で認識(ついでにUSBも)してログインまで到達。わーい。
>> NetBSD/evbarm efiboot (arm64), Revision 1.13 (Mon Feb 10 03:23:29 UTC 2020) Press return to boot now, any other key for boot prompt booting netbsd - starting in 0 seconds. 6200256+2685688+3049488+1514744 [587306+732024+515925]=0x101b010 [ 1.0000000] Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, [ 1.0000000] 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, [ 1.0000000] 2018, 2019, 2020 The NetBSD Foundation, Inc. All rights reserved. [ 1.0000000] Copyright (c) 1982, 1986, 1989, 1991, 1993 [ 1.0000000] The Regents of the University of California. All rights reserved. [ 1.0000000] NetBSD 9.99.46 (GENERIC64) #0: Mon Feb 10 03:23:29 UTC 2020 [ 1.0000000] mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/evbarm/compile/GENERIC64 [ 1.0000000] total memory = 3932 MB [ 1.0000000] avail memory = 3799 MB [ 1.0000000] pool redzone disabled for 'buf4k' [ 1.0000000] pool redzone disabled for 'buf64k' [ 1.0000000] armfdt0 (root) [ 1.0000000] simplebus0 at armfdt0: Sony UK Raspberry Pi 4 Model B [ 1.0000000] simplebus1 at simplebus0 [ 1.0000000] acpifdt0 at simplebus0 [ 1.0000000] acpifdt0: using EFI runtime services for RTC [ 1.0000000] ACPI: RSDP 0x0000000037320014 000024 (v02 MCRSFT) [ 1.0000000] ACPI: XSDT 0x00000000373100E8 00005C (v01 MCRSFT RPI4EDK2 02000820 01000013) [ 1.0000000] ACPI: FACP 0x0000000037260000 00010C (v05 MCRSFT RPI4EDK2 02000820 RPI4 00000097) [ 1.0000000] ACPI: DSDT 0x0000000037210000 001788 (v05 MSFT EDK2 00000002 INTL 20181213) [ 1.0000000] ACPI: CSRT 0x0000000037280000 000169 (v00 MCRSFT RPI4EDK2 02000820 RPI4 00000097) [ 1.0000000] ACPI: DBG2 0x0000000037270000 00005C (v00 MCRSFT RPI4EDK2 02000820 RPI4 00000097) [ 1.0000000] ACPI: GTDT 0x0000000037250000 000060 (v02 MCRSFT RPI4EDK2 02000820 RPI4 00000097) [ 1.0000000] ACPI: APIC 0x0000000037240000 000174 (v03 MCRSFT RPI4EDK2 02000820 RPI4 00000097) [ 1.0000000] ACPI: MCFG 0x0000000037230000 00003C (v01 MCRSFT RPI4EDK2 02000820 RPI4 00000097) [ 1.0000000] ACPI: SPCR 0x0000000037220000 000050 (v02 MCRSFT RPI4EDK2 02000820 RPI4 00000097) [ 1.0000000] ACPI: 1 ACPI AML tables successfully acquired and loaded [ 1.0000000] acpi0 at acpifdt0: Intel ACPICA 20191213 [ 1.0000000] cpu0 at acpi0: Cortex-A72 r0p3 (Cortex V8-A core) [ 1.0000000] cpu0: package 0, core 0, smt 0 [ 1.0000000] cpu0: IC enabled, DC enabled, EL0/EL1 stack Alignment check enabled [ 1.0000000] cpu0: Cache Writeback Granule 16B, Exclusives Reservation Granule 16B [ 1.0000000] cpu0: Dcache line 64, Icache line 64 [ 1.0000000] cpu0: L1 48KB/64B 3-way read-allocate PIPT Instruction cache [ 1.0000000] cpu0: L1 32KB/64B 2-way write-back read-allocate write-allocate PIPT Data cache [ 1.0000000] cpu0: L2 1024KB/64B 16-way write-back read-allocate write-allocate PIPT Unified cache [ 1.0000000] cpu0: revID=0x0, PMCv3, 4k table, 64k table, 16bit ASID [ 1.0000000] cpu0: auxID=0x10000, FP, CRC32, NEON, rounding, NaN propagation, denormals, 32x64bitRegs, Fused Multiply-Add [ 1.0000000] cpu1 at acpi0: Cortex-A72 r0p3 (Cortex V8-A core) [ 1.0000000] cpu1: package 0, core 1, smt 0 [ 1.0000000] cpu2 at acpi0: Cortex-A72 r0p3 (Cortex V8-A core) [ 1.0000000] cpu2: package 0, core 2, smt 0 [ 1.0000000] cpu3 at acpi0: Cortex-A72 r0p3 (Cortex V8-A core) [ 1.0000000] cpu3: package 0, core 3, smt 0 [ 1.0000000] gic0 at acpi0: GIC [ 1.0000000] armgic0 at gic0: Generic Interrupt Controller, 256 sources (247 valid) [ 1.0000000] armgic0: 16 Priorities, 224 SPIs, 7 PPIs, 16 SGIs [ 1.0000000] gtmr0 at acpi0: irq 27 [ 1.0000000] armgtmr0 at gtmr0: Generic Timer (54000 kHz, virtual) [ 1.0000070] PEPD (BCM2854) at acpi0 not configured [ 1.0000070] xhci0 at acpi0 (XHC0, 11063483-0): mem 0x600000000-0x600000fff irq 175 [ 1.0000070] usb0 at xhci0: USB revision 3.0 [ 1.0000070] usb1 at xhci0: USB revision 2.0 [ 1.0000070] USB0 (BCM2848) at acpi0 not configured [ 1.0000070] bcmmbox0 at acpi0 (RPIQ, BCM2849-0): mem 0xfe00b880-0xfe00b8a3 irq 65 [ 1.0000070] vcmbox0 at bcmmbox0 [ 1.0000070] VCIQ (BCM2835) at acpi0 not configured [ 1.0000070] VCSM (BCM2856) at acpi0 not configured [ 1.0000070] GPI0 (BCM2845) at acpi0 not configured [ 1.0000070] I2C1 (BCM2841) at acpi0 not configured [ 1.0000070] I2C2 (BCM2841) at acpi0 not configured [ 1.0000070] SPI0 (BCM2838) at acpi0 not configured [ 1.0000070] SPI1 (BCM2839) at acpi0 not configured [ 1.0000070] plcom0 at acpi0 (URT0, BCM2837-4): mem 0xfe201000-0xfe201fff irq 153 [ 1.0000070] plcom0: txfifo disabled [ 1.0000070] plcom0: console [ 1.0000070] URTM (BCM2836) at acpi0 not configured [ 1.0000070] BTH0 (BCM2EA6) at acpi0 not configured [ 1.0000070] RHPX (MSFT8000) at acpi0 not configured [ 1.0000070] sdhc0 at acpi0 (SDC1, BCM2847-0): mem 0xfe300000-0xfe3000ff irq 158 [ 1.0000070] SDC2 (BCM2855) at acpi0 not configured [ 1.0000070] sdhc0: SDHC 3.0, rev 153, PIO, 250000 kHz, HS 3.3V, re-tuning mode 1, 1024 byte blocks [ 1.0000070] sdmmc0 at sdhc0 slot 0 [ 1.0000070] cpu1: IC enabled, DC enabled, EL0/EL1 stack Alignment check enabled [ 1.0000070] cpu1: Cache Writeback Granule 16B, Exclusives Reservation Granule 16B [ 1.1425640] cpu1: Dcache line 64, Icache line 64 [ 1.1425640] cpu1: L1 48KB/64B 3-way read-allocate PIPT Instruction cache [ 1.1525598] cpu1: L1 32KB/64B 2-way write-back read-allocate write-allocate PIPT Data cache [ 1.1625609] cpu1: L2 1024KB/64B 16-way write-back read-allocate write-allocate PIPT Unified cache [ 1.1725606] cpu1: revID=0x0, PMCv3, 4k table, 64k table, 16bit ASID [ 1.1725606] cpu1: auxID=0x10000, FP, CRC32, NEON, rounding, NaN propagation, denormals, 32x64bitRegs, Fused Multiply-Add [ 1.1925616] cpu3: IC enabled, DC enabled, EL0/EL1 stack Alignment check enabled [ 1.1925616] cpu3: Cache Writeback Granule 16B, Exclusives Reservation Granule 16B [ 1.2025633] cpu3: Dcache line 64, Icache line 64 [ 1.2025633] cpu3: L1 48KB/64B 3-way read-allocate PIPT Instruction cache [ 1.2125629] cpu3: L1 32KB/64B 2-way write-back read-allocate write-allocate PIPT Data cache [ 1.2225636] cpu3: L2 1024KB/64B 16-way write-back read-allocate write-allocate PIPT Unified cache [ 1.2325636] cpu3: revID=0x0, PMCv3, 4k table, 64k table, 16bit ASID [ 1.2325636] cpu3: auxID=0x10000, FP, CRC32, NEON, rounding, NaN propagation, denormals, 32x64bitRegs, Fused Multiply-Add [ 1.2525648] cpu2: IC enabled, DC enabled, EL0/EL1 stack Alignment check enabled [ 1.2525648] cpu2: Cache Writeback Granule 16B, Exclusives Reservation Granule 16B [ 1.2625663] cpu2: Dcache line 64, Icache line 64 [ 1.2625663] cpu2: L1 48KB/64B 3-way read-allocate PIPT Instruction cache [ 1.2725660] cpu2: L1 32KB/64B 2-way write-back read-allocate write-allocate PIPT Data cache [ 1.2825670] cpu2: L2 1024KB/64B 16-way write-back read-allocate write-allocate PIPT Unified cache [ 1.2925670] cpu2: revID=0x0, PMCv3, 4k table, 64k table, 16bit ASID [ 1.3025680] cpu2: auxID=0x10000, FP, CRC32, NEON, rounding, NaN propagation, denormals, 32x64bitRegs, Fused Multiply-Add [ 1.3125681] cpu0: PMU interrupting on irq 48 [ 1.3125681] cpu1: PMU interrupting on irq 49 [ 1.3125681] cpu2: PMU interrupting on irq 50 [ 1.3125681] cpu3: PMU interrupting on irq 51 [ 1.3125681] uhub0 at usb0: NetBSD (0000) xHCI root hub (0000), class 9/0, rev 3.00/1.00, addr 0 [ 1.3398059] uhub1 at usb1: NetBSD (0000) xHCI root hub (0000), class 9/0, rev 2.00/1.00, addr 0 [ 1.4898097] sdmmc0: SD card status: 4-bit, C10, U1, A1 [ 1.4998097] ld0 at sdmmc0: <0x02:0x544d:SA32G:0x50:0x28c11dbe:0x12c> [ 1.4998097] ld0: 29544 MB, 7503 cyl, 128 head, 63 sec, 512 bytes/sect x 60506112 sectors [ 1.5163645] ld0: 4-bit width, High-Speed/SDR25, 50.000 MHz [ 2.9711459] uhub2 at uhub1 port 1: vendor 2109 (0x2109) USB2.0 Hub (0x3431), class 9/0, rev 2.10/4.20, addr 1 [ 2.9826380] uhub2: single transaction translator [ 3.3211594] boot device: ld0 [ 3.3211594] root on ld0a dumps on ld0b [ 3.3311597] root file system type: ffs [ 3.3411609] kern.module.path=/stand/evbarm/9.99.46/modules [ 3.3411609] WARNING: clock lost 40 days [ 3.3531083] WARNING: using filesystem time [ 3.3571838] WARNING: CHECK AND RESET THE DATE! Mon Feb 10 07:48:25 UTC 2020 Starting root file system check: /dev/rld0a: file system is clean; not checking fdisk: Cannot determine the number of heads Not resizing /: already correct size Starting file system checks: /dev/rld0e: 124 files, 54282 free (54282 clusters) random_seed: /var/db/entropy-file: Not present Setting tty flags. Setting sysctl variables: ddb.onpanic: 1 -> 0 Starting network. Hostname: arm64 IPv6 mode: host Configuring network interfaces:. Adding interface aliases:. Waiting for DAD to complete for statically configured addresses... Starting dhcpcd. no valid interfaces found Starting mdnsd. mDNSResponder: mDNSResponder (Engineering Build) starting mDNSResponder: Unable to parse DNS server list. Unicast DNS-SD unavailable mDNSResponder: mDNSPlatformSourceAddrForDest: connect 1.1.1.1 failed errno 49 (Can't assign requested address) Building databases: dev, utmp, utmpx, services. Starting syslogd. Feb 10 07:48:30 arm64 mDNSResponder: mDNSPlatformSendUDP got error 49 (Can't assign requested address) sending packet to 224.0.0.251 on interface 127.0.0.11 Mounting all file systems... Clearing temporary files. Updating fontconfig cache: done. Checking quotas: done. Setting securelevel: kern.securelevel: 0 -> 1 Starting virecover. Starting devpubd. Starting local daemons:. Updating motd. Starting ntpd. ssh-keygen: 1024 SHA256:JfZlqlKMsSSUEZM1LMQ3TWRWOfUqURaueAhu/FT0TGA root@arm64 (DSA) ssh-keygen: 521 SHA256:td5L5p5hgp4kuBi4Oid7PoCf7WetoTCqxDU2RXr4rw8 root@arm64 (ECDSA) ssh-keygen: 256 SHA256:/1qwo0nQT+1hbHa8QEC4VzvnqOWk2RiHIdPVOHwX/sk root@arm64 (ED25519) Feb 10 07:49:00 arm64 syslogd[183]: last message repeated 4 times ssh-keygen: 3072 SHA256:PA1KOUFEmnjGYwK4kM+JE/L4B21ZbMToeRa8c23A5es root@arm64 (RSA) Starting sshd. postfix: rebuilding /etc/mail/aliases (missing /etc/mail/aliases.db) Starting postfix. Starting inetd. Starting cron. Mon Feb 10 07:49:08 UTC 2020 NetBSD/evbarm (arm64) (constty) login: