サイコンレビューした夢をみた – Hammerhead Karoo2

はじめに

先日Coospoというところのサイコンをレビューしましたが、Hammerhead Karoo2というサイコンをレビューする夢を見ましたので、念写した内容も含めて記載します。

入手

なんでこんなものが家にあるの

公式サイト通販では売ってくれません。直接メールしましたがやはりダメであるとのこと。Far Eastの某島国に送ってくれる業者もいないようです。

価格

公式価格はUSD399で、アメリカ国内や、それぞれの販売地域なら送料は無料です。うらやましい。この値段だと、Garmin Edge 1030は十分にカモれますし、日本でセット価格でしか買えないEdge 830よりも安価です。

実物

サイクルコンピュータとしては大型の部類に入ります。ぱっと見はEdge 1030と同じくらいに見えます。液晶のサイズは1030より小さいですが、解像度は圧倒的にKaroo2のが勝ちです。マウントはKarooオリジナルで、Garminマウント互換のアダプタが付属します。ただし、このGarminコンパチブルマウントはかなり緩めなので、別途Oリングなどをつけて少しキツめにしてあげた方がいい、と公式のフォーラムに記載があります。そうしないと横のスイッチを押そうとしたときにマウントが回ってしまい、サイコンがすっ飛びかねません。

今回は試していませんが、nano SIMカードを挿入することができます。そうするとGoogle Mapなどから目的地の検索なんかも可能です。

デフォルトの状態では英語モードになっており、日本語入力はできませんが、サイコン自体は日本語の表示は可能です。Androidとしての機能も持っていますので、アプリを再度ロードして別途IMEなどを入れれば日本語入力も可能でしょう。

端的に言えば、これはサイコンに特化したスマホであります。ソフトウェアはAndroid 8 Oreoベースです。

いろいろ表示項目は選べます。デフォルトでは上記のような感じとなり、画面下半分はリアルタイムの地図表示になります。Edge 820からKaroo2に変更し(た夢をみまし)たが、古いクルマに初めてナビをつけたような、何か進化したような印象を受けました。

Stravaからのルートデータの読み込みも問題なく、ナビゲーション機能もGarminと同等以上に使用できます。少なくともEdge 820Jで何回かしてしまったコースアウトもKaroo2ではそんなこともなく林道までガイドしてくれました。名前のある道路など、日本語でちゃんと表示されました。Garmin EdgeのClimb proと同じような、これから行く先の登り勾配の程度なども表示されるのでなかなか便利です。

普段自分はパワーと左右の3秒間パワーバランス、ケイデンス、スピードその他を表示させています。似たようなパラメータが並びますので、数字に単位がつくといいなあ。

ANT+, BLEによるセンサーの認識も問題ありません。個人的にはこれがきっかけになりましたがVariaのリアレーダーまで表示できるので、ほんとうに便利です。現状のソフトウェアでは、回転数によるスピードメーターと速度の自動調整にバグがあるようで、GPSを利用するか手動調整をするように指示があります。手動で外径を入力することで距離の問題はでなくなりました。ソフトウェアのアップロードも月2回は行われ、比較的サポートも良いようです。

感想

これを常用する前はEdge 820を使用していました。Egde820ではタッチパネルの操作がもっさりしていて操作が通ったかよくわからない、ワンテンポ遅れる欠点があります。現行の830では改善していると思いますが、どうなのかわかりません。一方、EdgeシリーズはGarmin connectやヘルストラッカーと併用した場合の総合力はやはり最強と言わざるを得ません。

Hammerhead Karoo2については、雨の日やグローブ装着では操作がしづらいタッチパネルを補完するように物理キーがちゃんとあり、ストレスなく動作することはすばらしいと思います。

というわけで、Hammerhead Karoo2は単体では正直最強のサイコンと考えます。あえて欠点を記載すると以下の通り。これら欠点も多少は改善できていると思われますし、国内での販売が正直望まれます。

  • サイコンの機能としては問題ないが、Garmin connectなどの周辺アプリについてはGarminに一日の長がある
  • スピードセンサーの自動調整にまだバグがある(2021.9.23リリースのバージョンで改善したと書いてありますが、まだ確認してません)
  • たくさんの項目を表示できるが、単位が表示できないため表示位置を覚えないとなんの項目が表示されているか咄嗟に判断できないことがある
  • Garmin互換マウントがゆるい
  • EdgeにあるようなトレーニングメニューやFTP計測、VO2 max推計機能などがない
  • 国内での扱いがない

正直なところ、USD399に相当する価格で国内販売してほしいです。日本では技適の問題があるため、このレビューは夢の中身になりますが、 高級サイコン=Garminのアンチテーゼとなりうると感じました。

仮にこのサイコンがあまり流行らなくって物理的なデバイスの販売をあきらめたとしても、おそらくAndroidベースのソフトウェアサイコンとしてやっていけるんだろうと思いました。

サイコンレビュー CooSpo BC200

はじめに

こんにちは。

2020年春からロードバイクに乗り出しました。自転車を買えばお金はかからないのか、と思っていましたが軽量化パーツやらウェアやらいろいろお金がかかります。

購入時付属しないものとしては、いろいろなパラメータの測定・表示機能です。測定するにはそれぞれセンサーが必要ですし、それを表示するためのサイクルコンピュータ(サイコン)も必要となります。

乗り出してみて最低限ほしい表示項目は

  • スピード
  • ケイデンス

があり、さらに

  • 心拍数計
  • パワー計

などがあると自分のコンディションもわかっていいと思います。このあたり測定できれば最近のトレンドである電動変速と組み合わせてオートマチックトランスミッションができるんじゃないかと個人的には考えています。スピード計は最近はGPS内蔵のサイコンが増えているので、GPSデータから算出するのがトレンドのようです。GPSが搭載されているとあとでライドの結果をみていろいろ反省したりにやにやすることができるので、GPS機能も必須になるでしょう。GPS機能といえば、地図によるナビゲーションもあるとうれしいところです。

というわけで、今日はサイコンの話です。当初自分はXOSS G+というサイコンと、同じメーカーのスピードセンサー、ケイデンスセンサーを購入しました。今や実機がないのでそのレポートは後日行うとします。

今日は、とくに誘引なく購入したCooSpo BC200というサイコンのレビューを行います。

外観と箱

aliexpressで注文し、6000円ちょっとと記憶しています。日本語の記載された化粧箱に入っていて、文法的にも問題なさそうです。マウント器具一式と液晶保護のガラスフィルムが添付されており便利です(が、自分はGarminだろうとHammerheadだろうとフィルムなしで使っています)。

中身

サイズは大きいです。Garmin 1030と同じくらいでしょうか。マニュアルには66 x 88 x 20 mmと書いてあります。説明書は英語のみです。なお、販売者に問い合わせると日本語マニュアルのPDFを送ってくれるようです。

箱の中身。サイコン本体と片手持ちマウント、普通のマウント、USBケーブルと液晶保護ガラス、説明書。マウントはGarmin互換
箱の裏には日本語の説明もあります。
文章もとくに問題はないような
やっぱり助詞力の不足は否めない
2.4inch LCD screenの訳は謎

本体

電源を入れると普通に立ち上がります。

本体も日本語の選択はないので、英語を選択することになります。中国製ですが中国語の設定はなかったので、国際版を送っていただいたのでしょう。

本体にはUSB-MicroBの充電ポートがあります。ちょっと形が違いますがGarminマウントでそのまま装着可能でした。物理ボタンは4つで、スクリーンのタッチ操作はできません。どうせ手袋している環境だとタッチ操作は難しいのでそれは構いませんが、ボタンはやや重い(タクトスイッチか)ので運転しながらの操作は難しいかも。物理ボタンは左側がカーソル移動、右側は実行、キャンセルの機能を持ち、すべての機能がそこからアクセスできます。

バイク3台ごとにそれぞれのセンサーの登録ができるようで、センサーもBluetooth, ANT+両方に対応しています。手持ちのGarminのスマートウォッチの心拍計、XOSSのスピードセンサー、 自転車に付属しているパワーメーター+ケイデンス計も問題なく認識しているようです。認識は電波強度も出ますし、ANTやBluetoothのIDも出ますので、間違えて他人の心拍を見てトレーニングしてしまう愚は避けることができます。

年齢、性別、身長、体重を登録することで消費カロリーも計算してくれるようです。

衛星はGPSに加えBeidouとGlonassに対応していますが、自分ではGPSだけを拾うように設定しています。

運用

サイクリングを選択すると最初に位置情報を検索すべく待たされます。Amazonレビューでは衛星の受信が悪い、という記載がありますが、最初こそかなり待たされるもののその後は受信に失敗することはありませんでした。

そこから先はなんというか普通です。普通に使えます。雨が降っていても安心。回していないときなのでケイデンスとパワーが出ていませんが、他のサイコンと全く同じ値が表示されています。

ライド中(一部編集)

これ以上いじっていないのですが、データフィールドはデフォルトの9コマから変更できるようですし、パラメータもかなり多いようです。格安サイコンではパワー表示ができないものが多いですが、本機はちゃんとパワーメーターにも対応しているので、そこはポイントが高いです。

PC連携

アプリのCooSpoRideというのをインストールすることでスマホ上でstravaと連携したりすることができるようです。今回スマホアプリはまだ登録していません。USBケーブルで接続すると、fitファイルを直接取り出すことができ、それをstravaにアップロードすることは可能です。

また、本家ホームページでは新しいファームウェアがアップロードされていますが、これも圧縮ファイルを展開したものをコピーすることで簡単にアップデートすることができました。

なお、スマホアプリを入れないとタイムゾーンの変更はできないようです。

まとめ

パワー表示ができて表示桁数も多くてこのお値段ははっきりいってお得です。Amazonでも7,980円で800円引きで売ってますし、ブランドにこだわらないとか最初の1台とか予備とかStravaやってない人に無理やり登録させるとかにはいいのかもしれないです。

あえて欠点を上げるとすれば、機能の割にはでかいことがあげられます。Garmin Edge 1030と同じくらいのサイズなので、ナビゲーション機能があるとうれしいです。でもこの価格ですからそれは高望みというものでしょう。

タイAISの仏対応、あるいはSIMカード紛失に対する適切なレスポンス

こんにちは。

当blogでは海外旅行について他ではあまり述べられていない(=アフィリエイトではない)自分の経験について語っています。今回はちょっと前まで海外旅行クラスタで有名であったタイのAISという電話会社の国際ローミングSIMカードについて記載したいと思います。

2019年にタイ観光に行った際、AISの窓口でAISの海外ローミングSIM(SIM2Fly)を購入しました。この際にパスポートを提示し、私の個人情報に紐付けてタイの携帯電話番号092-xxx-xxxxを発行していただいています。

日本に帰ってきてから、コロナウイルスのパンデミックが発生し、今まで通り週末海外、ということが難しくなってきました。タイSIMもUberやGrab、Lineなどで登録できるため番号を維持しておきたいと考えていたのですが、いろいろ端末を乗り換えたりしているうちに紛失してしまいました。

ネット上で検索してもSIMカード紛失については記載がなく、本家ais.co.thでも英語の情報は出てきません。そんななかサポートのメールアドレスを発見し、ダメ元でメールしてみました。

I bought your AIS SIM2fly package when I had visited Bangkok on Apr 2019. The person in charge had registered my SIM card with the information of my Japan passport.
My AIS phone number is +66 92 xxx xxxx.

Few days ago, I lost my AIS sim card. I had registered some online services with that number, so that I’d like to ask you to re-issue the SIM card.
Could you please tell if that is doable, and what kind of procedure I need to do?

とすると速攻で返事が来て、まず自分の番号はtop-upされていないため番号が切れていること、登録したパスポートの写真、およびパスポートを持っている自分のselfieを送れ、ということでした。パスポートは2週間ほど前に期限が切れていたのですが、構わず送ったところ、なんとDHLで無料で新しいSIMカードを送ってくれました。SIMカード記載の番号を送ってほしい旨のメールをいただき、送ったところSIMカードの写真も送れということでいま送った瞬間、1時間後には開通するという返事が来た次第。

日本の携帯電話会社に同じ対応を期待するものではないですが、この対応を受けてAISの番号はずっと維持していたいと思いました。いきなり海外ローミングになるから、ちゃんと開通するかこのブログを記載している瞬間はまだわからないのですが。

中華サイクルジャージを購入したよ

最近Amazonの品ぞろえのクオリティがよくわからなくなってきており、よくわからないものを買うならAliexpressでもいいんじゃないかということでロードバイクのジャージをAliexpressで購入したという次第。自転車用品、高いですがなるべく本物を購入しようと常に努力しています。TICCCというブランドが好きで、参考までに同じMサイズのものを測ってみました。画像は好ましくないと思うのでのせませんが、色合いはだいぶ違います。

というわけでざっくりとした比較。

今回購入中華製(M)
(webpage記載の寸法)
もってるやつ EU製品(M)
首回り40cm (-)40cm
zipper57cm (54)48cm
背中72cm (70)62cm
袖長(内側)16cm (-)20cm
胸周り(わきの下周囲)49cm (94)46cm
腹周り(一番下)36cm36cm

というわけで、でかいというより長いです。生地もオリジナル・・・じゃなかった持ってるやつとだいぶ違います。まあ着ても破れちゃうことはないかな。ジッパーのところの処理がだいぶ違う感じで、裏地の補強はありません。筋肉がある人なら力入れたら北斗の拳状態になるのではないかと。

USB 真空管 DACつくりましてる

まだつくりかけ

こんばんは。

Stereo誌っていう、スピーカーやらアンプやらDACやらにちょっとした記事が付属して数千円、という雑誌があります。LXU-OT1っていうデジタルアンプかなにかが最初に付属して、LXU-OT2というのがPCM2704を使っているDAC+ヘッドホンアンプがその次に付属しました。ネットでもだいぶ盛り上がって改造している人はいっぱいいるようです。

方や秋月電子でもPCM2704を使ったDACが1700円で売っています。これをつかってぺるけさんがLPFをつけていろいろ発表してくださっており、自分も何作かつくりました。結局LXU-OT2が余っているというわけです。

こいつの回路図はネット上に転載されていますが、DAC側はほとんどデータシート通りで、すなわち秋月DACとそっくり・・・self poweredになっているのも同じです。秋月DACは出力にLPFもないのですが、こちらはLuxmanのブランド名にかけてOPアンプのボルテージフォロアがくっついており、そのあとにヘッドホンアンプ回路がくっついています。まだこれはいいんですが、そのあとのおまけシリーズにはおよそLuxmanの名前が恥ずかしくなるような作品もあって、やっぱりブランド名って安売りしちゃいけないと思うんですよね。

それはさておき、余ってしまったDACを秋月DACの代わりにつかって真空管式のバッファをつけようという、余剰部品活用プロジェクトです。今ヨックモックの箱に入っています・・・

LXU-OT2改造

まず、秋月DACのC5,C6相当がLXU-OT2のC88,C31になります。他にもC11が同じくC87になります。他にはLXU-OT2ではUSBの5VからDDコンバータで昇圧をしており、OPアンプの電源としています。DDコンバータへの電源供給はL3経由でなされています。

というわけで、コンデンサを交換しC88,31の直後でパターンカット、L3も引っこ抜くと概ね秋月DACと同じような仕様になるというわけです。出力のピンジャックもその直前の抵抗を引っこ抜き真空管バッファの出力をそこにつないでいます。

ライントランス回路

HANAOKA E-8223というライントランスが手元にあります。正式なデータシートなどはありませんが、どうも10K:7KのTpAs-3S相当品のようです。これを料理したいと思います。

二次側はインピーダンスが7KΩなので、次段とあわせて8.2KΩにしておけばいいかということにしました。一次側はちょっとわからないのですが、390Ωという値にしてあります。

真空管バッファ回路

6L5Gという球を落札しました。1本1000円しなかったと思いますが、eBayからだったので送料が同じくらいかかりました。もともと負帰還が75KΩがついており利得6倍だったのを、トランスでの損失を考えて100KΩとし利得8倍としてみました。

電源回路

ぺるけさん特注のRコアトランスはもう頒布終了です。今回は試作なので、どうしようか考えたのですが、Aliexpressを眺めていたらRコアトランスも結構出品している業者があるようです。中国なので大体1次側が220Vだったり、あっても110Vだったりしてピッタリの電圧のやつはなかったのですが、ある業者はカスタム使用のトランスの注文を受けてくれました。送料込みで3000円しなかったと思います。届くのに1ヶ月以上かかりますが、急いで製作したいわけでなければこれでもいいのではないかなと。

M1 Mac mini買ったった

こんにちは。Mac mini買いました。色々あったので報告します。速いぜ軽いぜ最高だぜというお話ではないので、もし参考になる人がいれば。 こういうリサーチは購入前にするのが賢いよね。

色おかしい、画面ぼけぼけ(YUVリミテッドレンジ)問題

HDMIの規格に色域空間というパラメータがあって、RGBとかEDIDとはExtended Display Identification Dataの略。パソコンにモニタを繋ぐとき、こういう解像度とか周波数まで対応できますよ、っていうことをモニタがパソコンに情報として与えてくれるもの。この中に色空間を指定するところがあって、最近のモニターではどうも RGB と、 YUVないしYCbCrないしYPbPrという指定ができるようです。こいつらはほとんど同じものを指しているらしく、ここでは YPbPrに統一します。Yは明るさ信号で、bとrはそれぞれ青方向、赤方向の色相環の値を指定するみたいで、RGB形式に対するメリットとしては情報量の削減だそうだ。

Macは元々 HDMI出力したときに、YPbPrの色空間を指定してしまい、外部モニタに繋いだ時によくわかないがボケぼけの画像になってしまう、ということがあって意識高い系の人にはケーブルやモニタの相性の一言で片付けられていた歴史があります。YPbPrは元々デジタルテレビの色空間のようです。

色空間が合っていない例。サブピクセルレンダリングがおかしくなっている。画面をスマホで撮影。HP LP2475w Debian Linux 10
色空間をRGBとして設定がうまくいっている例。HP LP2475w

こちらのサイトなんかに詳しくありますが、Intel Macの時代は基本的にはモニタのEDID (Extended Display Information Data) をいじってRGBしか受け付けないとMacに誤認識させて、強制的にRGB出力とする、あるいはHDMI接続を諦めてDisplayPortからの出力にする、という方法がありました。

https://discussionsjapan.apple.com/thread/252288295

https://www.eizo.co.jp/support/compati/pc/mac/apple-m1/

https://forums.macrumors.com/threads/m1-mac-external-display-fuzzy-fonts-colors-ypbpr-vs-rgb.2276345/

ここによると、 M1 MacではIntel Macより劣化が進み、HDMI出力だけでなく、その他の出力でも YUV limitedになっちゃうそうです。基本的にはモニタ側で制限かけるしかない。色々やるのが面倒な人は、 HDMI-DVI-D変換コネクタを使うことです。DVIにはYUV色域がないので、上手くいくはず(うちではうまくいっている)。

今 Thunderboltポートからドックを通じて Display Portに接続、っていうヤヤコシイことをやっているので、ちゃんと映るかどうか、もうちょっと考察していきます。

M1 Macになってからは上のページで散々議論されていますがEDIDの変更で対応する方法は上手くいかないようです。うちの新しく買った4Kモニタ+ Macbook Pro 2016では当初はYPbPrで写りましたがEDIDを変更することでRGBになり、画像もきれいになりました。このとき作成したEDIDをM1 Macの方にもってきたのですが、読み込んでもらえないようです。EDIDを読み込んでくれた事案もあるらしいのでこのあたりに回避策があるようにも思えます。

4Kやらretinaやら言っていますが、高解像度のモニタでは色空間の問題ははっきりわからず、色あいが多少変わるだけです。通常のHD画質のモニタだとアンチエリアシングの文字がやたらぼやけて猛烈に目が疲れます。ここいらにAppleの巧妙な買い替え作戦が潜んでいるように思えてなりません。

映像では大手のナナオが問題を発表してくれたから、Appleも対応してほしいと思いますが、なかなか解決しないだろうな。

ちなみにモニタにYUVないしYPbPrモードを制限する設定があれば、それに設定しましょうとナナオのサイトにはあるのですが、うちのDell U2720Qというモニタではそうしたら色が変になるだけでちゃんと写りませんでした。

いろいろ試してみたところ、Intel Macから持ってきたEDIDを読む条件があるようでした。Macbook Pro 2016でこのモニタにつないだときはHDMI経由で、M1 Macも条件をそろえてHDMI接続するとEDIDを読むことがあるようです。ただし解像度こそはMacbook Proを反映して2560xなんとかの設定あ出現しましたが、色空間はYPbPrでした。EDIDを読ませる作戦もうまくなさそうです。

EDIDのパッチやら改造やらは以下のサイトに詳しい。WindowsでEDID吸い出してMacにつないでみたらどうなるか、やってみたいと思います。

https://github.com/Akemi/macOS-edid-modification

現在はThunderbolt3 Dock (HP Thunderbolt3 Dock G2とかいうやつ)経由でUSB typeCでモニタに接続しています。このドックがまた相性があって、裏向かって左のポートじゃないと起動時に認識しない。それはさておき。

  1. U2720Qの SmartHDR をDesktopに設定
  2. Macのディスプレイ設定でHDRを有効に
  3. モニタの色空間をYPbPrからRGBに(色が変になるが気にしない)
  4. 再起動
  5. Macのディスプレイ設定でHDR設定を無効に(モニタ側のSmartHDRはDesktop設定のまま)

的なことをやったらRGBで固定されてしまいました。いろいろやっているので何がよかったのかよくわからないですが、名前から察するにSmartHDRはHDRを要求されていないときにはRGBモードに切り替えてくれそうな気がする。

プラセボかもしれませんが色空間がYPbPrよりRGBのが明らかに目が疲れません。

そもそもApple silicon対応してない問題

OfficeもSafariもChromeもFirefoxも対応してるからいいもんね、Rosetta2があるからなんとかなるっしょ。待ってればいいよ、という人には問題はありません。そう考えていた時期が自分にもありました。

問題となるのはいつもドライバです。Logitechのマウス(トラックボール) CT-100/TM-400を私は愛用していますが、 LogitechのArmのドライバはまだ出ていません。具体的には左右クリックとホイール、センターボタンクリックは動きますが、他のボタンはちゃんと動きません。古い製品なので、サポート切れが心配です。Kensingtonもあまり期待できそうにありません。まあ普通のホイール付き3ボタンマウス使うか、MacだったらMagic Trackpad2使えばいいんだろうけど。Magic Trackpadだけどアルカリ電池を入れて取れなくなった例を複数みているので、本当に気を付けた方がいいと思います。

あと探したけどプリンタドライバもなかった。

HomebrewはM1対応したけれども、自分が使う範囲では Rstudioがネイティブ対応していない。Pythonはいけるようだけれども、他にもネイティブ対応できないものはまだまだありそう。Anacondaもまだだよ、というか、Anacondaのライセンス有償問題があっってConda-forgeに以降していくのかな?

スワップでSSDすり減りまくり問題

購入したのは予算の関係でメモリ16GB、ストレージ256GBのちょっとだけカスタマイズしたやつです。これで救われたのですが、どうもSSDへのスワップがかなり頻回に起こっており寿命が早めに来ちゃうんじゃないかと。今のところ自分の使い方では(ってまだwebブラウズしかしてないが)スワップが発生したことはないようで、16GBならまあ安心なのかな。今9.33GBのメモリを使用している(iterm1つ、firefoxのタブが10こくらい)なんですが、8GBメモリの人はこの程度でスワップ発生してしまうんですね。誰ですか8GBで十分、16GBもいらないなんて提灯記事つくってるのは。8GBモデル全部リコールして16GBに無料アップグレードになるか、そのまましれっと早くぶっこわれるモデルになるような気がします。おそらく計画的陳腐化のうちの一つなんでしょう。だって記事になってないもんね。

Twitterの記事。

ほんとうはノートを買おうと思って都合でMac miniになってしまいましたが、少なくとも上記の問題が解決しない限りおっかなくて使えたもんじゃないと思います。真面目に仕事で使う用の機械はやっぱり初期ロットは外した方がいいな、と実感しました。

と、Surface Go2で書いています。

Debian BusterでTensorflow2 GPUを導入したよ

こんにちは。機械学習っていうのをやってみたくて(Microsoft Flight simulator2020もやりたくて)PCを組みました。

  • Ryzen 7 3700X
  • GeForce RTX 2070
  • 32GBメモリ
  • 1TB m.2 SSD + 256GB SATA-SSD
  • Windows10pro + Debian Buster

ハコとかその他はもらったりしたものなのと、Windows 8 Proのライセンスがあったので上記あわせて11万円くらいでした。今までグラボはS3派じゃないMatrox派じゃないATI派じゃないAMD派でGeForce使うのは初めてです。

Windows以外で機械学習をやる人はubuntuを使うようですが、前々から使っていたDebianでやってみたいという野望があり、なんとかしています。手元には直感Deep Learningという本があります。これが問題になるのですが後述します。

インストール

OSのインストールは型のごとく行います。Windowsに1TBくれてやり(ゲーム用)、Debian側には256GBというかわいそうな割り当てにしてあります。Linuxのスワップはメモリの2倍、という話が昔からありますが、32GBもメモリつんでてスワップが発生する気がしないのと、64GBもスワップスペースをつくると作業用スペースがなくなるので、8GB程度のスワップとしました。いろいろ現在は流派があるようでスワップサイズが何が正解かは正直わかりません。

https://www.tensorflow.org/install/ を見てtensorflowを入れます。どうも新しい2.xではgpu用のパッケージも一緒になっているらしい。Debianではpython3系のプログラムはpython3だったりpip3だったりするので、pip3コマンドで導入します。

まじめに開発する人は仮想環境を入れた方がいいでしょう。

# Requires the latest pip
pip3 install --upgrade pip

# Current stable release for CPU and GPU
pip3 install tensorflow

https://www.tensorflow.org/install/gpu を参考にgpu対応に必要なものを入れます。Tensorflowを入れるところでwarningが出る(setuptoolsのバージョンが古い)のでもう一回やったら改善しました。Debian BusterのdefaultのNVIDIA driverはVersion 450.66だったのでドライバのアップデートはかからなかったような気がしますが、CUDAを入れるときに勝手に新しくなったよう。

CUDA toolkit (11.1 Sept 2020というのを入れた) https://developer.nvidia.com/cuda-downloads 

sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/debian10/x86_64/7fa2af80.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/debian10/x86_64/ /"
sudo add-apt-repository contribsudo apt-get updatesudo apt-get -y install cuda

CUPTI;上記CUDA toolkitに入っているらしい

cuDNN 8.0.4 Download cuDNN v8.0.4 (September 28th, 2020), for CUDA 11.1  ここはCUDA toolkitとバージョンを合わせた方がいいと思ったので、やはり最新を。具体的には以下の3つをdpkg -i で無理やり導入しました。

cuDNN Runtime Library for Ubuntu18.04 x86_64 (Deb)

cuDNN Developer Library for Ubuntu18.04 x86_64 (Deb)

cuDNN Code Samples and User Guide for Ubuntu18.04 x86_64 (Deb)

以上で一応入りますが、エラーがとにかく出ます。多くはライブラリが存在しないよ、っていうやつです。ビデオカードのドライバ更新も必要ですが、確かCUDAを入れるときに勝手に更新された気がします。

インストールができて、GPUが使われているかはnvidia-smiか何かで見ればいいんですが、サンプルプログラム程度ではCPUで計算してもそれなりに速くってほんとにGPU使ってんのか? っていう感じになり、ちょっと実感としてわかりません。Tensorflow2はご丁寧にGPUが使えない場合、しれっとCPUで計算してくれてしまいます。最初は実行時のログファイルにImportErrorがいっぱい出ていて、これがGPUを使わない原因になっていたようでした。

環境変数 $LD_LIBRARY_PATHに/usr/local/cuda/lib64 を追加することと、/usr/local/cuda/lib64 以下のファイルにシンボリックリンクを張り直すことで対応しました。

libcupti.so.11.0 -> libcupti.so.11.1
libcusparse.so.10 -> libcusparse.so.11
libcusolver.so.10 -> libcusolver.so.11
libcublas.so.10 -> libcublas.so.11

あと確か/usr/lib/x86_64-linux-gnu中の

libcudnn.so.7 -> libcudnn.so.8 にも張った気がする。

それでもエラーが出ていて、

https://qiita.com/nall2240/items/31e821758ff618774d93 Tensorflow-gpuを使う際にはまったこと

を参考にして、

pip3 install tf-nightly-gpu

を導入したら解決できました。というわけでDebianでもTensorflow-GPUで遊べます。ただし、 nightlyなのでサンプルプログラムがなかなか動きません。ちゃんと使える人はいいんだろうけど、最新を追いかけるのはやめたほうがいいように思えます。これを書いたあと、結局自分の目的はインストールではなく機械学習の学習であることを思い出し、 ubuntuに入れ直そうと思います。さようなら DebianとTensorflow2.4。楽しかったよ。

で、当初の直感Deep LearningはTensorflow2に対応してなかった・・・Tensorflow2では旧バージョンとの互換機能を使えるらしいけど、わざわざ古いもの入門するのもどうかと思い

https://www.packtpub.com/product/deep-learning-with-tensorflow-2-and-keras-second-edition/9781838823412 Deep learning with tensorflow2 and keras 2nd edition

っつー第2版をKindleで買った。現場からは以上です。

旧車にBluetoothをのっけたよ

こんにちは。

自分が乗っているクルマは日本に帰ってきたときに中古で買ったアベンシスというやつです。前輪駆動でやたら曲がらないですが、トヨタの欧州のフラッグシップとしてつくったものらしくサイズとしては当時のメルセデス・ベンツCクラス以上Eクラス以下だそうです。厳密にいうとトヨタ製ではなくTMUKとかいうところがつくってます。Toyota Motor Manufacturing UKだそーです。日本ではとにかく知名度が低く、トヨタのお店にもっていったらこの車なんですか、と聞かれました。

中古なのでオーディオシステムも古くCDチェンジャーとMDプレーヤーがついています。ナビは大容量DVDナビで、前のオーナーが律義に地図のアップデートをしてくれていたのでそれなりに使えます。

で、CDはまだ持ってるし使っているのですが渡米に際しかなり処分しました。MDにいたっては人生で所有したことがありません。最近は音楽やら語学教材やらはMP3やflacなんかに変換してファイルサーバーに投げ込んであります。クルマで聴くときだけCDに、というのも何か時代錯誤な気がして(おまえのクルマが古い、という意見はその通りですすみません)、MDユニットをのっとってそこらにあるbluetoothレシーバを押し込む、ということをやってみたいと思います。

対象とか材料とか

  • アベンシスワゴンAZT250(前期型と思われる)
  • その純正オーディオ
  • bluetoothレシーバ(Aliexpressで買ったこれ
  • 配線をおっかけるためテスター
  • MDユニットには9Vが供給してありロジックが3.3Vという変態仕様のため5Vをつくるためのレギュレータなんか

まずインパネを外します。オーディオユニットはM10のボルトで止まっているのでそれも外します。上側はインパネを外すとボルトにアクセスできますが、下側はシフトゲートのカバーを外さないといけません。マイナスドライバーを養生して隙間に挟むとシフトゲート横のプラスチックカバーが外れます。下側のボルトにもこれでアクセスでき、それでオーディオユニットを引っ張り出すことができます。

オーディオユニットとエアコンのコントローラーははめ込み式になっています。いちおうDINモドキのようなので横の取り付け用の金具のM8ボルト4本、エアコンコントローラーのプラスねじ2本を外します。オーディオユニットとエアコンユニットはひっぱってもとれませんが横にスライドすると外れます。オーディオユニットをひっつかんで家に持って帰ります。

オーディオユニットの前面パネルははめ込み式なのでツメを外すと外れます。ひっくり返して裏のネジ、フロントのネジ4ヶ所を外すと下フタが取れ、MDユニット(3.5インチのハーフハイトのドライブみたいな感じです)が外れます。14Pフレキケーブルと、ユニットを冷却しているファンの電源ケーブルをちぎらないように気をつける必要あり。

MDユニットにはスイッチが3つ入っており、それぞれ SW1: IN, SW2: CLAMP, SW3: INNERという名前がついているようです。あ、書きわすれましたが、今回の方法は

  • オーディオユニットにMDが入っているように偽装する(これでアナログ系がMDの出力につながるハズ)
  • MDからのアナログ出力をのっとる

という作戦でいきます。というわけでMDが物理的に入っていないとSW1, SW2はOFFのままなのですが、このスイッチをショートしてSW1, SW2を強制ONにします。SW3はヘッドの位置を見ていると思うんですが、わからないのでこれもONにしてしまいました。

MDユニットにはLSIが何個かのっており、そのうち大物はM30621M8というワンチップマイコンとCXP2667RというDSPプロセッサのようです。MDは確かATRAC3というコーデックで書き込まれていてそれをどうやってデコードしているのか、ヘッドユニットにはデジタルで信号が送られているのかアナログで来ているのかちょっとわかりません。今日日の感覚からいうとデジタルでひっぱってCPUに全部処理させちゃえばデコードは楽勝ですが、13年落ちのクルマに乗っているユニットなのでアナログ出力の可能性も高いです。

ネットでデータシートを探すと、M30621M8については16ビットマイコンでありDAコンバータがついている、アプリケーションとしてはポータブルオーディオなんか、と書いてありました。当初CXP2667の方がなんだかさっぱり検索しても出てこなかったため、M30621のDACのアナログ出力がそのまま出力に来ているのではないかと考えいろいろパターンを追っていきましたがどうも違うらしい。

ちょっと考えればわかるのですが、CXP2667のアナログ出力がそのままフレキケーブルまで届いているというのが本当のところのようです。というわけでいろいろ調べた結果フレキケーブルのピンアサインはこれ。

  1. GND
  2. Analog out(R) CXP2667R 28P
  3. Analog GND
  4. Analog out(L) CXP2667R 25P
  5. ?
  6. M30621 Pin26
  7. M30621 Pin27
  8. M30621 Pin28
  9. M30621 Pin29
  10. ?
  11. ?
  12. ?
  13. ?
  14. 9V

わかんないところはいっぱいあったけど(パターン追うの大変だし)、なんだよ9Vって。6〜9ピンでヘッドユニット側とシリアルで会話しているようです。今どきのものだったらフルデジタル接続なんでしょうが、アナログ出力で助かった。

AliExpressのBluetoothレシーバーはUSB typeA端子が電源コネクタになっているのですが、USBコネクタを外して外部から5Vを供給します。Bluetoothユニットの出力のステレオジャックのところから配線を引っ張り出し、フレキケーブルのPin 2,4につなぎます。Pin2, 4のもともとの上流のDSPユニットにつながっているところはパターンカットします。

当初DSPの電源に行っているところを貰ってきてクルマにユニットを戻したら、中国語訛りの英語で「Battery level is low」とのこと。DSPチップ3.3V動作やないかい。仕方がないので手持ちの7805で5Vの降圧回路を作り、フレキの1ピンが電源端子と勘違いして再度クルマにセットしたら全く動かず、また外してきてチェックしたら14ピンが9Vだということが判明し、直してまたクルマにつけたら左から音がしなくなり、外してチェックしたら配線が外れており、直してまたクルマにつけたら今度はオーディオとエアコン以外のハーネスが奥に入ってしまいまたやり直しが必要という感じです。

家から駐車場までちょっと歩くんです。あとユニットつけるためにはボルトを12本くらいつけなおさないといけません。今日だけでクルマと家の間をユニットかかえて10往復くらいしています。

写真とか付け加える予定です。誰か役に立った人がいたら教えてくれるとうれしいです。

Pythonの勉強しようとしたらminicondaが死んでいたという件

こんにちは。

外に遊びにいけないので家でパソコンをいじることになりました。動画とか観るのもあきてきたため、やはり生産性のあることをやったほうがいいと思います。Pythonの勉強をしようとしてとりあえずminicondaをアップデートしようとしたりjupyter notebookを起動しようとしたらエラーが出ました。

ImportError: dlopen(/Users/○○/miniconda3/lib/python3.7/lib-dynload/_ctypes.cpython-37m-darwin.so, 2): Library not loaded: @rpath/libffi.6.dylib
Referenced from: /Users/○○/miniconda3/lib/python3.7/lib-dynload/_ctypes.cpython-37m-darwin.so
Reason: image not found

というわけでlibffi.6.dylibというのがないらしいです。

(base) lib $ ll libffi*
-rwxrwxr-x 1 ○○ ×× 37892 6 27 21:18 libffi.7.dylib*
-rw-rw-r-- 2 ○○ ×× 42792 4 23 06:06 libffi.a
lrwxr-xr-x 1 ○○ ×× 14 6 27 21:18 libffi.dylib@ -> libffi.7.dylib

libffi.6.dylibってのがないけどlibffi.7.dylibというのがあるらしい。で、バージョン番号を指定してないやつは新しいと思われる7の方にシンボリックリンクが張られている。

(base) lib $ ln -s libffi.7.dylib libffi.6.dylib

とやったら動きました。libffi-3.3の管理が変わったとかそんなことが

https://github.com/conda/conda/issues/9899

にありましたの参考迄に。前のバージョンをしばらく放っておいてアップデートするとこの問題が出るようです。

Python周りはオリジナルのやらhomebrewのやらpipやらanacondaやらでごちゃごちゃしているのであまりシェルでいじりたくないのですが、anaconda(minicondaだけど)の在りかがわかったからもう大丈夫かな?

cronの設定ではまったので報告するよ

こんにちは。

LinuxのcronでNHKの語学ストリーミングを録音して勉強しています。gogakuondemand.rbとかです。作者の人には大変感謝しております。

自宅においてあるraspbianのやつと、ほかで動かしているDebianのやつで同時に動かしてリダンダンシーを確保している(録音忘れを回避している)のですが、どっちも忘れたころにcronの設定を変更する必要があり、混乱が生じたので整理してみました。

  1. ユーザレベルでのcronの設定
  2. rootでの設定

1.ユーザレベルでのcronの設定

これは $ crontab -e を編集することになります。設定ファイルの保存先は /var/spool/cron/crontab の下にある各ユーザのファイルです。このディレクトリにはrootユーザじゃないと入れません。設定ファイルがユーザの見えるところにすぐないので、なんで設定してないのに動くんだ? と不思議に思ってましたが結局これが理由でした。

2.rootでの設定

cron(8)によると基本的には/etc/crontabを設定しろと書いてあります。Debianでは、このファイルの中に/etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly のディレクトリ中のファイルを処理するような初期設定がすでに記載されています。またこれもDebian specificとありますが、/etc/cron.dのファイルも読みに行くことになっています。もし/etc/cron.d にファイルを置くときは任意のcrontabの書式のファイルでいいんだけどpermissionは644にしてownerをrootにする必要があります。

あとユーザレベルのcronじゃないのでここにおくファイルはどのユーザが実行するかの設定を中に記載しないといけません。

まとめ

結局raspbianの方はユーザ側で設定していて、もう一台のDebian Linux boxの方はcron.dにファイルをおいていました。書式をすっかり忘れてて、なんでこのシステムではcronを設定してないのにちゃんと仕事が終わってるんだろうと不思議に思ってたというわけ。Linuxだと何かやるのに似た方法がいっぱいあるから、システムポリシーをよく考えておかないとはまりますね。あとcronの設定ファイルの中ではPATHがほとんど設定されてないので変なとこのプログラムが実行されたりするので注意が必要です。