Apple純正のUSキーボードの分解メモ

じゃんくはっく
じゃんくはっく

メルカリで純正ワイヤレスキーボードのUS配列をゲットしたよ!

またジャンクですか〜?

ぴー
ぴー
じゃんくはっく
じゃんくはっく

一応、完動品っぽい!ジャンクじゃないよー

めずらしぃ!

ぴー
ぴー

アップルのワイヤレスキーボードとはこんな製品です。今は、Magic Keyboard(充電式) っていうタイプなんで、乾電池を入れるこのタイプは古い製品ですね。写真は日本語配列ですが、これのUS配列でかたかながないタイプです。記号の位置や、英数・かなボタンが無いタイプとなります。

で、この古いタイプのワイヤレスキーボードは電池が3本のタイプと、2本のタイプがありますが、安ければどっちでもよかったので3本タイプをゲットしておきました。

状態を確認!

ぱっと見は、結構綺麗なんですが写真のようにスペースキーが少し変です。左側が沈んで、右側は浮いています。たぶん、清掃して組む時にちゃんとハマっていなかっただけっぽいので、押し心地もよくないしちょっとバラしてみることにしました。

バラすとこんな感じです

このタイプのキーはパンタグラフのプラスチックがキートップにハマっているだけです。外すのは、キートップを上側か、下側から持ち上げれば外れます。スペースキーなど、少し大きめのキーは、針金で補強されています。

良くみると、パンタグラフの一部と、金属部分が少し曲がっています。がーん! 左が沈んで右が浮いていた原因はこれですね。

パンタグラフは爪折れが右側にあったので、左右入れ替えて、右側が浮かないようにして対応。これでうまく治らない場合はまた考えることにします。あと、針金を受ける金属部分が曲がっていたので、ストロークが動かず、左側が沈んでしまっていたようです。金属部分は修正しておきました。

ハメ方のコツ

嵌める前に、掃除もしておきました。多分、前のオーナーが掃除してくれたんだと思います。あまり汚れはなかったのですが、ブラシと綿棒で軽く清掃。

で、ハメるコツですが、スペースキーなど、補強に針金が入っているキーはまず片一方を穴に通してやると簡単にハマります。

この薄型のキーボードは見かけによらず長持ちしますので、末長く使うなら保守用のジャンクを購入して修理するのもありかなと。今は使わない日本語キーボードを保守用のドナーにしておいても良いかも。薄い割には押し心地が結構よくて、気に入っています。毎日使っていても、かなり長持ちします。

下の写真は修理が終わったところ。浮いていた部分もしっかりハマって、折れていた爪も今のところ問題なく、しっかりタイプできるようになりました。

純正の場合は、このように電池残量が見えたりします。

あと、キーボード設定で「F1、F2などのキーを標準のファンクションキーとして使用」のオプションが表示されます。

まとめ

今回、なんとなくわかったのは以下となります。

・メルカリ相場は2000円〜4000円くらい
・Apple Wireless Keyboardは、電池3本のA1255と、2本のA1314とがある
・パンタグラフの爪は弱そうなので、バラして掃除するときは要注意
・キートップだけ外して、パンタグラフはつけたまま掃除のほうが良いです
・やっぱりUS配列は使いやすい
・パチモノとは大違い、Apple純正はタイプしやすいです!

あとがき

10年以上、このワイヤレスの日本語配列を使っていたのですが、拠点が複数になり1年前から英語配列のパチモノキーボードを使っていました。もともと英語配列のキーボードを使っていたので、すっかり慣れてしまったのですが、トニカクこのパチモノキーボードの押し心地が非常によくありません。

あえて言葉で表現するなら、Apple純正はしっとりした感じ。パチモノは軽くてキートップから滑る感じなんですよね。純正は薄くてもしっかりとした打鍵感がありますが、パチモノは打鍵感が弱いんです。うーん、言葉ではうまく表現できないですね。w まぁ、安いのでしかたありません。Bluetoothキーボードが1000円ちょっとで手に入るのはある意味、驚異的ですからね。

で、毎日触るキーボードですので、Apple純正の、US配列をゲットすることにしたのです。

 この薄型のキーボード、見た目は押しにくそうですが実は結構快適にタイプできます。キーストロークがあるタイプだと疲れてしまうのでこの薄い、ストロークがほとんどないこのキーボードが好きなんです。最近はこれの後継でMagic Keyboardというのがあるようで、次に壊れたら、これを使ってみようかなと思います。

 このキーボードが好きな理由は他にもあって、ESC横のF1〜F4あたりのキーに触りやすくて、ミッションコントロールなど特殊キーを割り当てています。いつかは、メカニカルスイッチのキーボードをDIYしたいので、こういう薄型タイプからは卒業しないといけないのですが、、、

著者にメッセージ

間違いのご指摘など、コメントじゃなくて、個人的にやりとりしたい場合はこちらからどうぞ。お返事が遅くなるときもありますが、ご了承を。

6年使ったSSDが突然、認識せず、あれこれした記録

じゃんくはっく
じゃんくはっく

6年使ったSSDが突然、認識されなくなって困った・・・

バックアップとか大丈夫だった?

ぴー
ぴー
じゃんくはっく
じゃんくはっく

丁度いいタイミングでOS載せ替えようとしてた時だったから、大丈夫だったよ!

SSDの寿命って実際どのくらいなんでしょうね?

ぴー
ぴー

ということで、ちょうどOSを載せ替えようとSSDを調達して、大事なデータをコピーし終えたところで、突然認識しなくなりました。認識しなくなったSSDはこれ。当時のカタログの切り抜きを。

正式な型番と購入した値段、時期は以下です。

Samsung SSD840 500GB MZ-7TD500B/IT

2013年8月2日当時に購入したものですが、当時は結構高かったですね!1年後くらいに1回壊れたので、保証があったので新品にしていだきました。なので、2014年12月から、2021年3月まで使っていたことになります。約6年ですね。

順番は前後しますが、壊れたからSSDを新調したわけではなくOSを載せ替えようと、新しいSSDを先に購入しておいたわけです。ラッキーでした!

新しいSSDは何にするか品定め!

 さて、OSを載せ替えるので新しいSSDを調達しようと思います。価格と相談ですが、容量どのくらいにしようかと久しぶりにリサーチ。

 なんと1TBが、¥10,980じゃないですか!7年前の価格に換算すると、5万ちょいですよ。しかもCrucialで国内正規品。これでいいやということで速攻ぽちっとしました。当時は500GBでも十分と思っていましたが、あれこれ動画編集とかアプリとかいろいろ入れるので500GBだとちょっと窮屈でした。1TBあればだいぶ余裕ができますね。

Amazon : Crucial SSD 1000GB MX500
¥10,980

https://amzn.to/2ORFRiK

このSSDのスペックは以下です。5年保証で、360TBのTBWがあります。きっと5年では、使いきれない書き込み総量ですね。

Crucial SSD 1000GB MX500 CT1000MX500SSD1/JP
発売時期:2018年 10月
Micron 3D TLC NANDフラッシュを採用
Silicon Motion SM2258 SSDコントローラを搭載
2.5インチフォームファクター、厚さ7mmの薄型モデル
SATA 6Gbpsインターフェース対応
読込速度 最大560MB/s
書込速度 最大510MB/s
4kランダム読込 95,000IOPS
4kランダム書込 90,000IOPS
ファイルの保存や転送の高速化するDynamic Write Accelerationテクノロジー
AES 256ビットのハードウェア暗号化によりデータを安全かつ確実に保護
Acronis True Image for Crucialに対応
Crucial Storage Executiveに対応
250GB、500GB、1TB、2TBの容量をラインナップ
5年間の制限付保証
総書込容量(TBW)360TB
(1日当たり197GBの書込を5年間行った場合に相当)

参考

https://chimolog.co/bto-ssd-mx500-1tb/
https://www.crucial.jp/ssd/mx500/ct1000mx500ssd1
PDF

macos10.15.7にしてデータ戻し中・・

順調にmacos10.15.7 にアップデートしてデータなどを戻し中にコピーが終わったあと、突然認識しなくなりました。データコピーはSSDをUSB3.0に繋ぐケーブルで接続していました。

aliexpress:USB 3.0 to Sata Cable

URL

アリエクで500円くらいのものです。結構、便利でUSBだと遅いし容量も欲しい時なんかに重宝します。1本あると便利ですよ。

なんとか認識させる!

Testdisk でパーティション検出させようと1日以上かけてパーティション解析。このツールのインストールはbrewで入ります。

$ brew install testdisk
$ sudo testdisk

なんかおかしいですよね! このDISKはパーティションは2つしかないのですが、複数見つかります。ほげー。あ、ちなみにtestdisk はログは取らない方がよいです。あとでわかりましたが、でかいログファイルを消すことになりました。Disk Drillのクリーンアップ画面です。

testdiskを実行する際は、ログを意図的に残したい場合意外は、[ No Log ]を選択 して実行したほうが無難です。操作全般は以下が参考になります。

データ復旧大図鑑:Mac版TestDiskの使い方

https://jisaku-pc.net/hddhukyuu/archives/8354

だめもとで、いらないパーティションを削除して書き込んでみます。

上下矢印で行を選択、左右矢印でD状態にできます。OKだったらEnter。

じゃ、書き込んでみます。

はい、ダメでした! ま、大事なデータはすでにコピー済ですから問題ありません。

じゃ、ディスクユーティリティーでフォーマットしましょうか。

ぐぬぬ。フォーマットさえ出来ないとは! 以下のパターンもありました。

“Samsung SSD 840 Series Media”(disk2)を消去して“500G”を作成中
 ディスクをマウント解除中
 パーティションマップを作成中
 パーティションのアクティベートを待機中
 disk2s2をMac OS拡張(ジャーナリング)、名前を500Gとしてフォーマット中
 Initialized /dev/rdisk2s2 as a 466 GB case-insensitive HFS Plus volume with a 40960k journal
 ディスクをマウント中
 disk2s2を消去した後にマウントできませんでした
 空のAPFSコンテナを新規作成中
 内部エラーが起きました。:(-69614)
 操作が失敗しました…

根本理由はわかりませんが、EFI領域が邪魔しているのかもしれません。試しにリブートして、リカバリーモードでディスクユーティリティーを起動したらうまくフォーマットできました。同じようなエラーコードでフォーマットできないときは、お試しを。実機だとコマンド+Rですね。Hackintoshだと、リカバリーモードをEFIブート時に選択します。

Smart情報を見てみる!

一応、無事にフォーマットできたので、ディスクユーティリティーのFastAidでチェックしておきましたが問題はありませんでした。今度は有償ツールですが、Disk Drillで見てみます。

なんか「寿命」の文字がたくさん出ています。しかし、それほど気にしてはいけません。

Smart情報は各社、独自で出しているようなので仕様が完全に共通化していません。ここでは以下くらいが参考になるかなと。16326時間、稼働していて電源は5116回付けたと。最後の書き込み量は単位はなんでしょうか? 赤字で記載した部分はよくない数字です。

Reallocated sector count 43
Power-on hours count 16326
Power cycle count 5116
Used Reserved Block Count 43
Runtime Bad Count (total) 43
Total LBAs Written 3541977737

Linuxのsmartctlコマンドだと以下のように出るようです。同じ型番のサンプルデータはGITHUBにあったのでリンクしておきます。このSSDは赤字相当の数字は0ですね。書き込み総量は33.13 TBもあるのにね。

Github:SMART/SSD/Samsung/SSD 840/SSD 840 Series 500GB
Link

ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
  5 Reallocated_Sector_Ct   PO--CK   100   100   010    -    0
  9 Power_On_Hours          -O--CK   091   091   000    -    40511
 12 Power_Cycle_Count       -O--CK   096   096   000    -    3871
177 Wear_Leveling_Count     PO--C-   086   086   000    -    169
179 Used_Rsvd_Blk_Cnt_Tot   PO--C-   100   100   010    -    0
181 Program_Fail_Cnt_Total  -O--CK   100   100   010    -    0
182 Erase_Fail_Count_Total  -O--CK   100   100   010    -    0
183 Runtime_Bad_Block       PO--C-   100   100   010    -    0
187 Uncorrectable_Error_Cnt -O--CK   100   100   000    -    0
190 Airflow_Temperature_Cel -O--CK   069   048   000    -    31
195 ECC_Error_Rate          -O-RC-   200   200   000    -    0
199 CRC_Error_Count         -OSRCK   099   099   000    -    122
235 POR_Recovery_Count      -O--C-   099   099   000    -    1745
241 Total_LBAs_Written      -O--CK   099   099   000    -    71143537386
                            ||||||_ K auto-keep
                            |||||__ C event count
                            ||||___ R error rate
                            |||____ S speed/performance
                            ||_____ O updated online
                            |______ P prefailure warning

書き込み量のTotal LBAs Writtenは、どうやらセクターサイズを掛けるようです。testdisk とかでみると、セクターサイズは512byteのようです。

以下の計算機で算出すると、1.65 TBとなりました。

SSD Total Bytes Written (TBW) Calculator

https://www.virten.net/2016/12/ssd-total-bytes-written-calculator/

Samsung SSD840のTBWは?

当時のカタログをみても、TBWは記載されていませんでした。書いてある記載は、MTBF(平均故障間隔)として、150万時間とあります。

以下に当時のレビューがありましたが、その中に以下とあります。

総書き込み容量(TBW)は、当社規定で1日あたり20GBで計算しています。そして、840では毎日20GB書き込む人でも3年間は十分保証できる品質を実現した、ということです。

https://akiba-pc.watch.impress.co.jp/hotline/20121117/sp_fline.html

つまり、21.9TByteがTBWということですかね。ということは、まだ1.65 TBしか書き込みしていませんが、Reallocated sector count 43など出ていますので、かなり要注意が必要ですね。これは実際に不良セクタが発生した数なので、今後もっと増えていくはずです。つまり、即ダメになるわけじゃないですが、もう寿命に近づいていると思って間違いありません。SMART情報をモニタリングしながら、軽めの作業に使うことにします。音楽再生用のキャッシュとか、データが飛んでも問題ないような用途です。

TechTool Pro 13でチェック

ちょっと違うツールを使って、SSDをチェックしてみることします。TechTool Pro 13のサーフェーススキャンとSmartチェックをやってみます。

サーフェイーススキャンは問題ありませんでした。

注意は必要そうですが、まだ行けそうな感じですかね。Windowsマシンにくっつけて、SAMSUNG Magician Softwareでチェックしてみるのがいいんですが面倒なんでやめました。またの機会に確認してみます。

SAMSUNG Magician Software

https://www.samsung.com/semiconductor/minisite/jp/support/tools/

現状のSSD速度ベンチマーク

実質、購入してから6年使っているSSDのベンチマークを計測しておきます。

SSDに記録されている時間は、16326時間で約680日、トータル書き込み量は1.65 TBの、Samsung SSD 840 Series MZ-7TD500B/IT です。

あと、今回購入したCrucial SSD 1000GB MX500 CT1000MX500SSD1/JPは以下です。

まとめ

今回、なんとなくわかったのは以下となります。

・バックアップは大事
・不良セクタは43個あった。今後増えそう
・書き込み総量は超えていないが、そろそろ寿命と判断していいだろう
・耐用年数を超えたら、TMP領域など軽めのDISK用途に使う
・心配なら廃棄すれば間違いないです
・SMART情報は各社違うので、要確認必要
・Disk DrillのSMART表示、監視は参考程度に
・TechTool Pro 13のほうが、Disk関連のチェックは豊富
・今回はtestdisk では復旧できず
・ディスクユーティリティーで初期化出来ない時は、OSをリカバリーモードで起動してやれば今回はフォーマットできた
・紹介しなかったけど、TechTool Pro 13のスナップショット機能は便利
・SSDはHDDと比べても結構、耐久性あるな!
・最近のSSDは、保証期間中に書き込み総量を超えるのはまず、無理
・しかし、故障するかどうかは使う環境により左右される

あとがき

SSDの寿命というのは、今回体験したようにいつか訪れます。稼働部品がないHDDとは違いSSDならずっと使えるはずと思いガチです。長年ずっと使い続けているなら、ちょっと点検してみるのもいいかもしれませんね。

加えて、ファイルシステムの不整合というのは、使っているうちにどうしても発生してしまいます。5、6年の間には停電もあり、ブレーカー落ちることもあり1年に一回くらいは、OSをクリーンインストールしてバックアップ(DropBoxやGoogleDriveなど)に大事なデータは分散バックアップしておくのがやっぱり大事だなーと改めて思いました。今回は、特に大事なデータは消失しませんでしたが、運がよかったなーと思います。ちょっと違うタイミングだったら結構慌てていたかもしれません。

 ついつい面倒になって、クリーンインストールは腰が重いですが、これからは1年に一回くらいはやろうと思います。あと、SMART情報のモニタリングはやっておいたほうがいいですね。今回、死にかけのSSDの寿命が完全に尽きたらまたレポートしようかなと思います。

 あと、HDDですが6TBが1万で買えるんですね! みんなNAS用途で使ってるみたいですが、何入れてるんでしょうか。TVの録画データとかですかね。

著者にメッセージ

間違いのご指摘など、コメントじゃなくて、個人的にやりとりしたい場合はこちらからどうぞ。お返事が遅くなるときもありますが、ご了承を。

謎のICが載ったType-Cリポ充電基板でポケットオシロを電池仕様に!

じゃんくはっく
じゃんくはっく

ポケットオシロをType-C充電仕様にしたよ!

おもちゃみたいなオシロスコープね!

ぴー
ぴー
じゃんくはっく
じゃんくはっく

おもちゃ感がいいでしょ! でも、結構使えるヤツなのよ。

さて、今回はこの前、アリエクでポチった1枚あたり45円のリポ充電基板が届いたので早速使ってみました。基板はこんな感じです。

リチウムポリマー充放電保護基板

リポ充電基盤のType-C版が出てたんでポチった!

https://hack.gpl.jp/2021/02/20/type-c/

この前、買ったんですが結構届くのが速かったですね。写真のように繋がった状態で送られてきますので、手で折って分離します。基板が薄いので簡単に分離できます。

これのマイクロUSB版はだいぶ昔に以下で紹介しています。

5V 18650 リチウムバッテリー充電モジュール

投稿日: 2015年5月10日

このメインICはTP4056だったはずですが、今回の基板には型番・LN4056っていう刻印があります。

これ、スペックシートが出てきませんね。これは、まぁTP4056の互換チップなんだと思います。多分作っているのはここ。

上海南麟电子股份有限公司
Shanghai Nanlin Electronics Co.、Ltd

http://www.natlinear.com/

南麟っていうのが愛称ですかね。中国のサイトを深く潜ればPDFもあるとは思いますが、これ以上追わず。工作したいので。近い型番だと、以下にPDFがあります。

南麟PDF

http://www.natlinear.com/uploadfiles/2014/LN/

工作終わってから、気になって探しました。結果、以下にありました。

LN4056H

http://www.icdemi.com/viewManual.aspx?p=LN4056H.pdf

製品概要を和訳すると以下です。

USBインターフェースと互換性のある1.0Aリニアバッテリー管理チップ

■製品概要
LN4056Hは、定電流/定電圧で単セル充電式リチウム電池を充電できる充電器回路部品です。このデバイスは内部にパワートランジスタを備えており、アプリケーションで外部電流検出抵抗やブロッキングダイオードを必要としません。 LN4056Hは、周辺機器をほとんど必要とせず、USBバスの技術仕様に準拠しているため、ポータブルアプリケーションに非常に適しています。
熱変調​​回路は、デバイスの消費電力が比較的高い場合、または周囲温度が比較的高い場合に、チップ温度を安全な範囲内に制御できます。内部固定定電圧充電電圧は4.2Vで、外部抵抗で調整することもできます。充電電流は外部抵抗によって設定されます。入力電圧(ACアダプターまたはUSB電源)の電源を切ると、LN4056Hは自動的に低電力スリープモードになり、バッテリーの消費電流は0.1μA未満になります。バッテリ電圧が入力電圧よりも高い場合、内蔵パワーMOSFETは自動的にオフになります。その他の機能には、低入力電圧ラッチ、自動再充電、バッテリー温度監視、および充電ステータス/充電終了ステータス表示が含まれます。 LN4056Hは、イネーブルピンを介して充電をオフにすることができ、オフ状態のチップの静的消費電力は20uA未満です。チップには、バッテリ逆接続保護があります。
LN4056Hは、熱的に強化された8ピンスモールアウトラインパッケージESOP8を採用しています。

Local:pdf

バッテリーに繋がずUSBを接続すると?

基板に電池を繋がないと、青色LEDが常時点灯して赤色LEDが不規則に点滅して光ります。この挙動はTP4056と同じですね。

詳しく検査はしていませんが、仕様は同じと思うので組み込んでみることにします。

ポケットオシロをType-C版に変更

DSO Shellというポケットオシロですが、リポ電池仕様に変更してつかっていました。これは、USBからリチウムポリマー電池に充電するユニット(青い小さな基板)と、5Vから9Vに昇圧するDCDCコンバーター(写真の黒いやつ)が入っています。

以前、使っていた、マイクロUSB仕様の充電するユニットを今回のType-C仕様に交換します。まずは古いの取り払う作業をしたのですが、グルーガンで固定していただけですが、かなり強力に付いていました。写真は、古いのを取って新しいのに交換済みの状態です。

ちょうど、電池も寿命で充電できなくなっていたので両方とも交換しました。バッテリーに繋いだ状態だと、赤色LEDだけ光って充電されます。そして、充電が完了すると青色LEDだけが光ります。

黒い基板は、DSO Shellの電源電圧は9Vなので5Vを昇圧する基板ですが、これは交換せず使い回しします。

上が古い基板で、下が今回のです。大きさは同じですね。基板の厚みは今回のType-Cのが薄かったです。コストカットでしょうか。まぁ、でも薄いほうが組込しやすいので、問題ないですけどね。

この電池でポケットオシロはどのくらい動く?

このリポ電池は250mahです。満充電でどのくらい動くのでしょうか。あまり気にしたことがないので、確認してみます。満充電した状態から、動かしっぱなしにしてどのくらい電池が持つのか? 電源ON・・・・

今の所10分くらい経過していますが、まだ動いていますね。この電池もアリエクでポチったやつです。5年くらい前に買って、まだ数個残っています。

250mahのかわいいLipo到着

リンク

さらに10分経過しましたが、まだ動いていますね。・・・・さらに5分経過。結構もちますね! さらに5分したところで画面が点滅しました。およそ30分っていう感じですね。これだけ持てば十分です。この状態から満充電までは25分くらいでした。

まとめ

今回、なんとなくわかったのは以下となります。

謎のICが載っていたが、おそらく互換チップ
・追加調査で、これは上海南麟电子股份有限公司のLN4056H
・USBから充電したら赤く点灯し、満充電で青く点灯。問題なく動作した
・詳細にチェックしていないので気が向いたら確認してみよう

あとがき

やっぱりType-Cの充電はいいですね。最近ケーブルがType-Cばっかりになっているんで、マイクロUSBだとケーブル探さないといけないときがあります。それに、上下どっちに刺してもいいので楽ですよね。Type-C万歳です。

あと、チップの出どころがわかりスペックシートがあってよかったです。リチウムポリマー電池に充電するので、仕様が不明なICだとなんだか気持ち悪いですよね。南麟という会社は、今まで知らなかったのですが上海に2004年にできた比較的新しいチップ製造メーカーのようです。ISO9001:2008も取得していて、電源管理チップが専門のようです。

著者にメッセージ

間違いのご指摘など、コメントじゃなくて、個人的にやりとりしたい場合はこちらからどうぞ。お返事が遅くなるときもありますが、ご了承を。

2021/02 site24x7 でのSLA状況・統計データ

じゃんくはっく
じゃんくはっく

ついに99.95%以上を達成したよ!

きたー!おめでとうー

ぴー
ぴー
じゃんくはっく
じゃんくはっく

2月のダウンタイムは3 分 29 秒でした

スマホサーバなのにがんばったね!

ぴー
ぴー

site24x7のスターターパックを2020の10月から始めています。監視サービスでSLAを99.95%目指していましたが、ついに達成できました!

稼働率・SLA99.95%をスマホ自宅サーバで目指せ!まずは1ヶ月間

LINK

ちなみに、先月は97.42%で無理でした。site24x7の監視サービスは強力ですが、まだ自動的に復旧する仕組みを作っていないので、再起動は人力となっています。これができれば常に目標SLAを達成できそうです。

2021・02のSLA

さて、今月の結果から!
ダウンタイムの3 分 29 秒で、SLAは99.991%となり今月は目標の99.95%に届きました! やったー!

ツイッターで、呟いていたらSite24x7の中の人がうれしいメッセージを送ってくれました。

嬉しいツイート、ありがとうございます!

少しダウンした原因は?

毎回、いいところでダウンするので今月は意図的に再起動を手動でしておきました。毎回、ある程度時間が経過すると「Bad Gateway」が出てしまうんです。とりあえず、再起動を少し入れて様子見をしてたんですが、それが良かったようです。赤い部分は再起動を入れたので、そのダウンタイムです。

まとめ

今回の教訓は以下となります。

・再起動は有効だった
・根本原因はまだ未調査。対処療法で再起動して対応
・再起動を自動化するには、スマホのリセットを外部から行う仕組み作りが必要
・実験用で、UmidigiF2にその仕組みを模索したい

あとがき

前回から、スマホを意図的に再起動させる仕組みをどうするか考えています。ハードウェア的に再起動を行うには、バッテリーを外して、電源をリモートからコントロールするようにするとか考えていましたが、root化してある端末ですので、他にも方法がありそうです。それにハードウェア的にリブートさせてもandroidシステムのいろいろな問題(例えば再起動後はロック解除しないとホーム画面まで行けないなど)があります。

ソフトウェア的には、以下コマンドでシステムが瞬時にシャットダウンします。

$ tsu
# reboot -p
Done

-pオプションを取れば、リブートします。しかし、このリブートだとWiFi接続に自動的に接続しなかったり、再起動時はロック解除をしないとHOME画面まで行かないのでTermux bootが動作しなかったりと問題があります。

そこで、以下を試しています。

Google Play : MacroDroid – デバイス自動化

https://play.google.com/store/apps/details?id=com.arlosoft.macrodroid

このアプリはよく出来ていて、これを使うことにより、以下のような事ができることがわかりました。

・一定曜日の特定時刻にソフトリブート(要root化必要)
・起動時にWiFiの特定APへ接続(ヘルパーアプリ使用)
・起動時に特定アプリを強制起動(termuxを起動させる)

このリブートだと、ロック解除しなくても特定アプリが動かせるし、WiFiへの接続も問題なさそうです。

termux が動作すれば termux boot でtermux内部のソフトウェアは起動します。今は、テストでdnsmasqやsshdを自動起動させていますが問題なさそうです。とりあえずは、一定間隔でリブートさせることは出来そうです。

site24x7の障害検知サービスをどのように受けて、このシステムと切り離してトリガーしてリブートできるよう、何か良い方法はないかなと考えているところです。トリガーはいろいろあるので、その方法を模索中です。

著者にメッセージ

間違いのご指摘など、コメントじゃなくて、個人的にやりとりしたい場合はこちらからどうぞ。お返事が遅くなるときもありますが、ご了承を。

XIAOでMacのスクリーンショット専用USBキーを作るDIY

じゃんくはっく
じゃんくはっく

スクショの専用キーがほしい!

Macだと、シフト+コマンド+3とかの?

ぴー
ぴー
じゃんくはっく
じゃんくはっく

Mac標準だとそうだけど、Skitchっていうスクショツール使ってるからシフト+コマンド+5だね。

いろんな需要があると思うからカスタマイズできるといいね

ぴー
ぴー

今回のDIYは、ちょっと実用的なものを作ろうかと思います

最近、はまっている小さくて安いArduino互換機、XIAOを使ってカスタマイズできるキーボードを作ろうと思います! 冒頭でも少し触れましたが、MacのスクショアプリでSkitchっていうツール使っているんですが、このスクショのショート専用のキーボードを作ろうかと。ショートカットは、シフト+コマンド+5ですが、3つもボタンを押さないといけないので、1ボタンだと助かります。

その後、Skitchの編集メニューから「画像をコピー」でクリップボードに入れてWordPressのローカルアプリに貼り付けるのが、一連の動きです。このショートカットがシフト+コマンド+C です。

構想では、この2つのボタンが専用であるといいなと。キャンセルしたいときにESCキーがあると便利かもしれませんね。

使えるUSBライブラリは?

TinyUSB Mouse and Keyboard library

https://github.com/cyborg5/TinyUSB_Mouse_and_Keyboard/

このライブラリは、Chris Youngさんが統合したTinyUSBです。以下で紹介されています。

Mouse and Keyboard Control Using TinyUSB and BLE

examplesを試したのですが、記述がわかりやすいし使いやすそうだったのでこれでやってみることにします。他にも、Seeedの紹介ページにAdafruitのライブラリを使った例がありますが、examplesを見た限りでは使いにくそうでしたのでこちらはパスです。

Seeeduino XIAOをUSBデバイス(TinyUSB)として使う

ライブラリを入れる

マスターのZIPをArduinoIDEから入れて、例題をやってみます。

ZIP : TinyUSB_Mouse_and_Keyboard

URL

Arduino IDEからライブラリをいれるのは、以下からです。

ZIPのライブラリを入れると、以下のように同じところから見えていると思います。

提供されたライブラリは、Macだと以下に入るようです。直接ここに入れてもOKです。

/Users/USERNAME/Documents/Arduino/libraries/

ちなみに、ArduinoIDE組込(デフォルトの)は以下です。

/Applications/Arduino.app/Contents/Java/libraries/

XIAOのボード関連は以下にあります。

/Users/USERNAME/Library/Arduino15/packages/Seeeduino/

ライブラリとか、PGのディレクトリ以下に格納しておいたほうが後からわかりやすいかもしれません。数年後、また動かそうとすると環境変わっていたりしますからね。その場合は、includeをダブルクオートで囲って記載すればカレントディレクリ(現在のディレクトリのこと)を参照します。

#include "TinyUSB_Mouse_and_Keyboard.h"

サンプルを動かしてみる

Macユーザーで、Launchpad のショートカットをF5にしていれば動作します。

$ git clone https://github.com/take-i/XIAO-USB-example.git
$ cd XIAO-USB-example/xiao_usb1/
$ open xiao_usb1.ino 

XIAOに書き込んで、見てください。ブラウザが起動して JunkHackのページが見えていれば成功です。

サンプル例では、Launchpadが開き、コマンドFで検索、英字モードに切り替えてterminalをタイプしてターミナルを開きます。ターミナルからはURLをオープンしています。macの場合、コマンドの修飾キーは以下のようにKEY_LEFT_GUIが相当します。WindowsだとWINキーです。

  // New terminal windows
  Keyboard.press(KEY_LEFT_GUI);
  Keyboard.write('n');
  Keyboard.releaseAll();

Keyboard.pressは、押しっぱなし状態になるのでKeyboard.releaseAll()でリリースします。delayを入れないと、速すぎて期待する動作にならないので適当に調整します。

4ボタンの専用キーボードを作る!

さて、サンプルはうまく動いたので実際にボタンをつけて日常的に使える状態にします。こんなコードにしました。

https://github.com/take-i/XIAO-USB-example/tree/master/ss-key

Pin接続は、A7 , A8 , A9 , A10 とGNDの5つです。なお、このPGは同時にボタンを押した時の考慮はしていませんのでご注意を。クリティカルなボタンの場合は、何かキーが押されている場合は違うキーの処理に入らないようにする必要があります。

筐体に組み込む!

3Dプリンターとメカニカルスイッチで作るのが面倒だったので、適当なジャンク品のキーボードを漁ってきました。

15年くらい前の無線キーボードです。エンターキーが無くなっているのは、子供に剥がされたからです。それ以来、使っていませんでしたがここに来て約に立ちそうです。

このタイプのキーボードはノートPCと同じで、キーボードの下はフィルムのメンブレンスイッチになっています。これにジャンパー配線するのは厳しいので、端っこのパーツを使うことにしました。

こっちは基盤があって、なんとかなりそうです。キーボード筐体をグラインダーで切断し、左側部分を使うことにしました。こんな感じ。

配線はこんな感じ。XIAOは小さいので、ほんと助かります。

黒い線がGNDで、それ以外はボタンからのプリント基板の配線からジャンパー線を出して使っています。

こんな感じで、無線キーボードの上に置いてあります。

右側からESC、スクショ、スクショのコピー、https://www.canva.com/ を開く の4機能を持たせてあります。今もこの記事を書いているときにこのボタンを使っていますが、かなり便利ですね! canvaを割り当てているのは、ブログ記事のサムネイルをいつもここで作るからです。今回はこんな感じかな?

Macからはこんな感じで認識されています。

キーボードの修飾キーにも、出ていますね

MacのKeycodeを確認

※追記
MacだとどんなKeycodeがタイプされるのか確認しておきたかったので、macosで動作するキーロガーのソースを少し修正してDecで数字を出すように改修したものが以下にあります。

Mac OS X Keylogger

https://github.com/take-i/keylogger-macos

オリジナルは、アトランタのアプリ開発者、ケーシー・スカボローさんが作ったものです。簡単に使い方を記載しておきます。

$ sudo touch /var/log/keystroke.log
$ sudo chmod 644 /var/log/keystroke.log
$ git clone https://github.com/take-i/keylogger-macos.git && cd keylogger-macos/
$ make
$ sudo ./keylogger

ログは以下のパスに数字で出力されます。

$ tail -f /var/log/keystroke.log

たとえば、Macのキーボード配列の場合、F3キーはMission Controlのキーとなり、Keycodeは、160となります。F3の場合は99です。純正キーボードの場合は、以下のようにキーボード設定に「F1、F2などのキー標準のファンクションキーとして使用」のチェックボックスがでます。社外キーボードの場合、これはでないようです。

DIYキーボードをUSB接続したとき、macのキーボードだと認識させてMission Controlのコードとして認識させるようにする方法を模索したのですが、ちょっとよくわかりませんでした。また、いつか再チャレンジしたときに覚書として書いておきます。

まとめ

今回、なんとなくわかった・わからなかったのは以下となります。

・Seeed XIAOは簡単にキーボード・マウスのデバイスが作れる
・スイッチOn,OffタイプであればPinの数分、キーは作れる(最大、11Key)
・ライブラリは、TinyUSB Mouse and Keyboard libraryが使いやすかった
・KeycodeというのがUSBの仕様で決まっているようです(hut1_12v2.pdf
・こっちのUSB仕様書のほうが新しいかな?(hut1_21_0.pdf
・macの場合は、Mac OS X Keylogger を少し手直しすれば番号がわかる
・しかし、USBの仕様書とは違う値が帰る(例:F3は、macだと10進で160または99、USB仕様書では、60)
・PGの定義は、0xC4で10進だと196
ここによれば、0x88以上は、その値から0x88を引いた数(10進だと136)となるようです。つまり、196-136=60 なるほど!PGの定義からは謎がとけました
・しかし、macのkeycodeは違う値を出す。ここがよくわからない
・おそらく、macはkeycodeのマッピングテーブルを持っているのだろう
・または、キーボード種類によってF3はMission ControlになるようOSがマッピングしているのだろう
・keycodeとUSBデバイスのレイアウトの関係はまだ奥が深そうだ
・フィルムのメンブレンスイッチって自作できないかな?
・アルミテープとラミネートフィルムで作れないかな?

あとがき

作ってみて、実際に使ってみたらすごく具合がいいです。USBデバイスをこんなに簡単に作れるとは、驚きですね。いつか、本格的なキーボード作りもしてみたいです。40%キーボードとか小さくて可愛いので使ってみたいんですが、何から手をつけていいのかよくわかりません。あと、薄いMacのキーボードに手が馴染んでしまったのでという理由もあります。

まぁ次キーボード作る機会もあると思うので、その時は自作したいですね。

著者にメッセージ

間違いのご指摘など、コメントじゃなくて、個人的にやりとりしたい場合はこちらからどうぞ。お返事が遅くなるときもありますが、ご了承を。