MQAデコードがTidalデスクトップアプリで可能に修正されてた!

Tidal公式のデスクトップアプリと、外付けDACを使っています。DACは、Hiby FC3 Portable MQA USB DAC というお値打ち価格7500円なMQAフルデコード対応のものです。

以前、いくつかMQAとDAC関連のネタを書きましたがその時は、Tidal公式のデスクトップアプリでは、DAC側のMQAランプが固定になり、MQAデコードできない状態でした。本来であれば、MQA音源(master ラベル) ソースの場合は紫色にLEDが点滅します。

久しぶりに、このDACをつけてmacosのTidal Desktopアプリで聞いてみるとちゃんとLEDが紫に光っています。TidalアプリのDac設定は以下のようにしています。

Passthrough MQA をアクティブにすると、DAC側のランプが固定になっちゃいますね。これ意味合い的には、Onにすれば、ソフトウェアデコードされず、パススルーされるという意味だと思うのですが、期待とは逆です。つまりソフトウェアデコードされてDACに流れているのでしょう。

About TIDALでバージョンを確認してみました。

2.28.0.275 となっていました。リリース日は、2021.05.19 です。以前評価したときは、2021年2月14日でしたのでそれ以降のFixで修正されたようですね。リリースノートを確認してみましたが、明示的には記載されていませんでした。

Release May 19, 2021
* Updated Credits design
* Various bug fixes

Release April 21, 2021
* Add folders for My Playlists
* Fix settings not properly saved
* Various bug fixes

Release March 30, 2021
* Fix error message shown for some users

Release March 29, 2021
* Fix audio glitch 30 seconds before track finishes
* Fix error message shown for some users

Release March 25, 2021
* Fix transparent mini player for some users
* Fix update button not restarting app

Release March 22, 2021
* Added support for Croatian, Slovenian and Serbian languages
* New player design
* Various bug fixes

Release February 10, 2021
* Search in My Collection (filter favorite items)
* Various bug fixes

ここは結構、大きな修正だと思うので記載してほしかったですね。なんつったって、MQAデータをリリースしていてオフィシャルアプリでMQA DACのハードウェアデコードできないなんて、ユーザーはガッカリしていましたからね。

備忘録:Ryzen 5 3600のLinuxでUnixBench

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

WordPressの仕事が終わったんで、今日は好きなことやるよ!

WordPressの仕事もやってるのね!

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

だいたい、何でも頼まれたらやっちゃうよ!w

で、Linuxはubuntuですか?

ぴー
ぴー

そういえば、だいぶ前にRyzen 5 3600をメインマシンにしたんですが、これでLinux動かしてなくて、UnixBenchのスコアが気になっていました。Diskはさくっと入れ替えられるよう、2.5inchの脱着ベイをつけてありますので今回はこのマシンにUbuntuを入れてUnixBenchを計測してみようと思います。

Intelチップ、2022年までしばらくさようなら!
投稿日:  更新日:2020年11月13日

Link

もう1年以上使っていますね。intelがRyzenを盛り返すまで繋ぎで使っているんですが、なかなかintelは画期的なのを出しませんね。AppleはM1のオリジナルCPU出してきたし、5年後はintelが昔のAMDみたいになっていなければいいんですが。

Ubuntu 20.04.1 LTSでUnixBench

MacOS10.14.x でUnixBenchを計測した時は、マルチCPUで2323.1でした。Ubuntu 20.04.1 LTSで、Ryzen 5 3600は以下のスコアです。

UNIX Benchmarks (Version 5.1.3) on AMD Ryzen 5 3600

Single-Core Score:2422.6
Multi-Core Score:7919.0

詳細は以下です。SSDは、SLCのsata2 64GBです。

   BYTE UNIX Benchmarks (Version 5.1.3)

   System: mone: GNU/Linux
   OS: GNU/Linux -- 5.4.0-42-generic -- #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020
   Machine: x86_64 (x86_64)
   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
------------------------------------------------------------------------
Benchmark Run: 日  5月 30 2021 00:29:08 - 00:57:06
12 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       50630225.0 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     9059.2 MWIPS (9.9 s, 7 samples)
Execl Throughput                               7946.0 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks       1256459.1 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          338174.5 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       3192098.2 KBps  (30.0 s, 2 samples)
Pipe Throughput                             2633467.7 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 364452.5 lps   (10.0 s, 7 samples)
Process Creation                              10672.3 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                  10448.3 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   5218.2 lpm   (60.0 s, 2 samples)
System Call Overhead                        3716288.0 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   50630225.0   4338.5
Double-Precision Whetstone                       55.0       9059.2   1647.1
Execl Throughput                                 43.0       7946.0   1847.9
File Copy 1024 bufsize 2000 maxblocks          3960.0    1256459.1   3172.9
File Copy 256 bufsize 500 maxblocks            1655.0     338174.5   2043.4
File Copy 4096 bufsize 8000 maxblocks          5800.0    3192098.2   5503.6
Pipe Throughput                               12440.0    2633467.7   2116.9
Pipe-based Context Switching                   4000.0     364452.5    911.1
Process Creation                                126.0      10672.3    847.0
Shell Scripts (1 concurrent)                     42.4      10448.3   2464.2
Shell Scripts (8 concurrent)                      6.0       5218.2   8697.0
System Call Overhead                          15000.0    3716288.0   2477.5
                                                                   ========
System Benchmarks Index Score                                        2422.6

------------------------------------------------------------------------
Benchmark Run: 日  5月 30 2021 00:57:06 - 01:25:17
12 CPUs in system; running 12 parallel copies of tests

Dhrystone 2 using register variables      377415057.2 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                    85109.8 MWIPS (9.8 s, 7 samples)
Execl Throughput                              38242.8 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        870656.3 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          231207.7 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       2754722.9 KBps  (30.0 s, 2 samples)
Pipe Throughput                            17510677.3 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                1622682.3 lps   (10.0 s, 7 samples)
Process Creation                              70024.7 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                  67019.5 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                  10011.7 lpm   (60.0 s, 2 samples)
System Call Overhead                       16785255.3 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0  377415057.2  32340.6
Double-Precision Whetstone                       55.0      85109.8  15474.5
Execl Throughput                                 43.0      38242.8   8893.7
File Copy 1024 bufsize 2000 maxblocks          3960.0     870656.3   2198.6
File Copy 256 bufsize 500 maxblocks            1655.0     231207.7   1397.0
File Copy 4096 bufsize 8000 maxblocks          5800.0    2754722.9   4749.5
Pipe Throughput                               12440.0   17510677.3  14076.1
Pipe-based Context Switching                   4000.0    1622682.3   4056.7
Process Creation                                126.0      70024.7   5557.5
Shell Scripts (1 concurrent)                     42.4      67019.5  15806.5
Shell Scripts (8 concurrent)                      6.0      10011.7  16686.2
System Call Overhead                          15000.0   16785255.3  11190.2
                                                                   ========
System Benchmarks Index Score                                        7919.0

同じRyzenだと、ThinkCentre M75q-1 Tiny のRyzen 5 Pro 3400GE (3.30GHz, 2MB) が以下のスコアです。

UNIX Benchmarks (Version 5.1.3) on Ryzen 5 Pro 3400GE (3.30GHz, 2MB)

Single-Core Score:2151.7
Multi-Core Score:6552.1

Ryzen 5 3600のが速いですが、このマシンも頑張っていますね。これは以下で紹介しています。

130W電源でThinkCentre M75q-1 Tinyのベンチマーク

URL

ちなみに、このマシンはWEBサーバにしようと思いっていたのですがフォートナイトやるっていうんで息子に持っていかれてしまいました。。。なので、このブログはスマホPixel3のWEBサーバでがんばっています!

まとめ

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

・Ryzen 5 3600 は、シングル2422.6 マルチ7919.0 のUnixbenchスコア
・2021/05/30時点でintelの次のCPUは、「Alder Lake」を2021年後半に発売予定
・これは10nmのようです
・特に困っていないので、7nmとか5nmのintelが出るまでじっくり待ちます

あとがき

Intelがこのまま、黙ってAMDを先行させるだけではないと思っていますが、苦戦しているようです。まぁ、しかし、普通の作業をしているだけであれば、Core i7 3770; (Ivy Bridge)でもぜんぜん十分で、いまだにサブマシン(メインマシンに近い存在)で頑張っています。このCPUは、第3世代のもので、今から約10年前にリリースされました。macosも10.8くらいから10.15(現在)でずっと使っています。重い作業するのは、ビルドするときくらいでしょうか。あとはアプリケーションを同時に30個くらい開いたりしながら作業するとき、少しもたつくくらいです。

著者にメッセージ

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

メールを送ってみる

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の録画データとかですかね。

著者にメッセージ

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

メールを送ってみる

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のキーボードに手が馴染んでしまったのでという理由もあります。

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

著者にメッセージ

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

メールを送ってみる

ポートフォワードの経路で、Uターン NATとかヘアピンNATが使えないルータの場合のあれこれ

先日、以下のように困っていました。

Termuxのapache2+php+mariadbのチューニング前のwordpressの速度とか
::
まぁ、速度的なことより困っていることがあります。それは、ローカルのマシンから、termux上で動作しているwordpressにグローバルIPでアクセスできないことです。この場合、ルータの管理画面にアクセスしちゃうんで、どうしようかなと。こういうのなんていうんでしたっけか? とにかく、今の拠点のルータ(PR-400KI)は、内側ネットワークから外側のグローバルアドレスにアクセスしたものを、変換(最終的にサーバのプライベートアドレスに変換)してくれないのです。

これ、言葉で書くとよくわかりませんが、どんな問題かというと以下のようになります。

こういう表現として、UターンNATとか、ヘアピンNATとか呼ぶようです。これが出来るルータとできないルータがあり、NTTから借りているルータではできませんでした。いろいろ解決方法があるとは思いますが、一番簡単なのは、クライアントPCをVPNで外部のネットワークからアクセスさせる方法です。つくば大学のVPN Gateを使えば簡単に解決できますが、インターネット経路となりいまいちです。プレイベート間の通信なのでリバースプロキシを経由する方法が良さそうです。ポート変換がなければ、hosts を書き換えるか、内部DNSを立ち上げればいいのですが、今回の場合は、スマホサーバで提供しているポートは8080です。80と8080を対応付ける必要があり、hosts だけでは無理なので、リバースプロキシを通して、アクセスしてみることにします。

 ブログの更新は、クライアントPCからしか行わないのでこのPC中に設置してみました。もちろんリバースプロキシを分離して、内部DNSを立ち上げれば、理論上は何台でも違うポートとIPを使って好きなドメインでアクセスできます。そのうち、IoTデバイスとか、スマホサーバでクラスタリングとかロードバランサーとか使い出したら内部DNSやリバースプロキシは欲しくなってくるのですが、それはその時にまた考えることにします。

 ということで、クライアントにリバースプロキシを作って、スマホサーバの8080ポートで提供されているWordPress にアクセスしてみることにします。幸い、クライアントはMacなので nginx とかで簡単に作れます。

Macでリバースプロキシをnginxで作る

経路のイメージはこんな感じでしょうか。まずは、nginx を入れます。

$ brew install nginx

起動と再起動、停止は以下のようにします。

・起動
$ sudo nginx
・再起動
$ sudo nginx -s reload
・停止
$ sudo nginx -s stop

設定を以下のように書き換えます。server_nameや、proxy_passのIPやポートなど読み替えて書き換えてみてください。

/usr/local/etc/nginx/nginx.conf
::
worker_processes 1;
error_log /usr/local/var/log/nginx/error.log;

events {
  worker_connections  1024;
}

http {
  # This should be in the same directory as this conf
  # e.g. /usr/local/etc/nginx
  include       mime.types;
  default_type  application/octet-stream;
  
  # Note this log_format is named 'main', and is used with the access log below
  log_format   main '$remote_addr - $remote_user [$time_local]  $status '
    '"$request" $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';

  sendfile        on;
  keepalive_timeout  65;

  # Without this I got this error: 'upstream sent too big header
  # while reading response header from upstream'
  proxy_buffer_size   128k;
  proxy_buffers   4 256k;
  proxy_busy_buffers_size   256k;

  server {
      listen 80;
      server_name jh.gpl.jp;
      proxy_set_header    Host    $host;
      proxy_set_header    X-Real-IP    $remote_addr;
      proxy_set_header    X-Forwarded-Host       $host;
      proxy_set_header    X-Forwarded-Server    $http_host;
      proxy_set_header    X-Forwarded-For    $proxy_add_x_forwarded_for;
      access_log /usr/local/var/log/nginx/reverse-proxy.access.log  main;

      location / {
          proxy_pass         http://192.168.1.38:8080;
      }
  }
}

hosts を書き換えます。

$ cat /etc/hosts
::
127.0.0.1 jh.gpl.jp

nginx を再起動して、ブラウザでドメインに対してアクセスすればOKです。

ちなみに、wp-config.php に以下を追記すると、接続元が192.168.1.26 の時だけWordPress のドメイン名が www.gpl.jp に書き換わります。もちろん、アクセスするクライアントのhosts は書き換える必要があります。

if( $_SERVER['REMOTE_ADDR'] == '192.168.1.26' ){
    define('WP_HOME','');
    define('WP_SITEURL','');
}

ということで、macos で簡単にリバースプロキシーを立ち上げて、内部ネットワークの違うポートで提供されているWordPress にアクセスする方法でした。

Lan内部のスマホからもアクセスしたい場合は、内部DNSをDHCPで配布して、リバースプロキシーと対応付けしないとだめですので、完璧を求めるならそれらが必要です。そのうち、作る機会があれば紹介したいなと思います。