ブログ
USB CABLE CHECKER 2 で USB Type-C ケーブルの性能を確認する
先日 RAVPower 製 90W USB PD 充電器 RP-PC128 を買いました。 同じく RAVPower 製の 61W USB PD 充電器 PR-PC112 を持っていたのですが、 65W を要求する Dell 製ノート PC に給電しながら電源を入れると 途中で電力が足りない旨メッセージが表示されて起動が一時停止したり、 Windows 10 起動後も電力不足の通知が表示されるという状態で煩わしかったためです。
eMarker 付きのケーブルを持っていなかったので RAMPOW という謎のメーカーの PD 3.0 / USB 3.1 Gen2 対応を謳う USB Type-C ケーブルと Bit Trade One の USB CABLE CHECKER 2 (ADUSBCIM) もついでに購入しました。
RAMPOW は Web サイト を見ても本社所在地や電話番号等が一切書かれておらず怪しげなメーカーという印象だったため、 ケーブルを使用する前に念の為 USB CABLE CHECKER 2 で確認しようという寸法です。 (※購入後に気付いたのですが、RAMPOW の Amazon出品者プロフィール に住所と電話番号が書かれていました。中国深センの会社のようです。)
RAMPOW 製ケーブル RAD03
さっそく RAMPOW 製ケーブルを確認してみます。
USB CABLE CHECKER 2 の表示は以下の通り。
GND+VBUS=188mΩ CC:DOWN1K/E-MARKED SHELL-GND SHORT(A&B)
表示の意味については 取扱説明書 に記載されています。
[DOWN1K/E-MARKED]
Cプラグ内にGND-VCONN間に接続された1kΩの抵抗器を持ちます。
これにより接続先USB機器にEマーカーIC内蔵ケーブルということを通知します。
[SHELL-GND SHORT(SIDE)]
プラグシェルがGNDと導通している場合表示されます。()内は導通している側のコネクタがA,Bどちらかを表します。
両側のコネクタが導通している場合はA&Bと表示されます。
なお、タイプC-Cケーブルでは規格でGNDとシェルが接続されることが定められています。
CC:DOWN1K/E-MARKED は eMarker 内蔵、 SHELL-GND SHORT(A&B) は両側のプラグシェルが GND と導通していることを示しています。
eMarker が内蔵されているため 3A を超える電流が流せます。 connection のランプも全点灯しており、PD 3.0 / USB 3.1 Gen2 対応を謳うケーブルとして特に問題なさそうです。
RAVPower 製充電器 RP-PC128 付属ケーブル
購入時に気付いてなかったのですが、 RP-PC128 にも 1.5m の Type-C ケーブルが付属していたためこれも確認してみます。
GND+VBUS=170mΩ CC:DOWN1K/E-MARKED SHELL-GND SHORT(A&B)
eMarker が内蔵されているため 3A を超える電流が流せます。 connection のランプは USB 2.0 の部分と CC (Configuration Channel) が点灯しています。 USB 2.0 対応の PD ケーブルとして使えるようです。
電源ケーブルとして使うならこれで十分ですね。
RAMPOW のケーブルいらなかったのでは?
Lenovo Yoga Book C930 付属ケーブル
手元にあったほかの USB Type-C ケーブルも確認してみます。
GND+VBUS=212mΩ SHELL-GND SHORT(A&B)
eMarker が内蔵されていないため 3A までの電流しか流せません。 connection のランプは USB 3.2 が一部点灯しています。
USB 3.0, 3.1 では TX1/RX1 と TX2/RX2 のどちらかが繋がっていれば良いようです。 USB 3.2 Gen 2x2 では TX1, TX2, RX1, RX2 のすべてを使用してより高速な通信を行うため、このケーブルは利用できません。
SBU (Sideband Use) は USB では使用されず、 DisplayPort 出力や Thunderbolt などの Alternate Mode に使われる信号線のようです。
USB 3.1 対応の PD ケーブルとしては使えそう。
One-Netbook OneMix3S 付属ケーブル
GND+VBUS=225mΩ
SHELL-GND SHORT(A&B) の表示がない……。 規格に従ってないケーブルのようです。 これは使わないほうがよさそう。
まとめ
RAVPower 製 90W USB PD 充電器 RP-PC128 と RAMPOW 製ケーブル RAD03 の組み合わせで、 65W を要求する Dell 製ノート PC が問題なく充電できました。
RP-PC128 は MacBook 付属の 61W USB-C 充電器と比べて サイズがひと回り小さい (65 x 65 x 32 mm) ため持ち運びやすく、 90W の大出力により充電できる機器の幅が広がります。
また、電力に余裕があるため、BUFFALO の 5-in-1 ドッキングステーション LUD-U3-CGD/N を間にはさんでも安定して動作しています (61W 出力の PR-PC112 を使用したときは有線 LAN の通信がブツブツ切れていた)。 ケーブル1本で電源、ディスプレイ、有線 LAN、キーボードが繋がるのは便利です。
今回購入した RAMPOW 製ケーブルは問題ありませんでしたが、 手持ちの OneMix3S 付属ケーブルが規格違反だったのは意外でした。 USB Power Delivery では高電圧、大電流が流れるため、 ケーブル購入の際は信頼できるメーカーのものを選んだほうがよさそうです。
参考サイト
M5StickC + Speaker Hat で ESP8266Audio ライブラリを使用して MP3 ファイルを再生する
前回の M5StickC + Speaker Hat で SPIFFS から読み込んだ WAV ファイルを再生する では自力で WAV ファイルを読み込んでいましたが、 ESP8266Audio というライブラリを用いることで ESP32-PICO 搭載の M5StickC でも MP3 が再生できることを教えて頂きました。 ということで、今回は事前に SPIFFS へ保存した MP3 ファイルを ESP8266Audio で読み込んで再生します。
スケッチ
以下は A ボタン(正面の「M5」ボタン)を押すと MP3 ファイルが再生されるスケッチです。
SPIFFS からファイルを読み込む AudioFileSourceSPIFFS クラス、 MP3 を再生する AudioGeneratorMP3 クラス、 I2S で出力する AudioOutputI2S クラスを使用しています。 ESP8266Audio は MP3 以外にも WAV, FLAC, MIDI, AAC などのファイル形式を読み込めるようになっており、 それぞれのファイル形式に対応した generator クラスを使用する必要があります。
generator->isRunning() で再生中か確認し、再生中でない場合にボタンが押されたら MP3 ファイルを再生しています。 一度再生が終わり generator->stop() を呼び出すとファイルが閉じられます。 そのため、2回目以降の再生時はファイルを再び開く必要があります。 source->isOpen() でファイルが開かれているかを確認し、 開かれていない場合は source->open() でファイルを開いています。
AudioFileSourceSPIFFS クラスでは再生する度にファイルを読み込むため、 ESP32-PICO のメモリ (520KB) に収まるサイズのファイルを何度も再生するのであれば、 以下のように setup() 内でファイルを読み込み AudioFileSourcePROGMEM クラスを使用した方がよいかと思います。
自力での WAV ファイル再生との比較
前回行った自力での WAV ファイル再生では 8bit, 8000Hz 限定だったこともあり、 比較すると音質はかなり改善しましたが、 再生の前後にプチプチとノイズが入るようになりました。 また、コンパイルにかかる時間もかなり長くなっています。
コンパイル時間はどうしようもないと思いますが、 再生前後のプチプチは下記参考サイトのクリックノイズ対策を行えば消せるかもしれません。
参考サイト
M5StickC + Speaker Hat で SPIFFS から読み込んだ WAV ファイルを再生する
前回の M5StickC + Speaker Hat で音声データを再生する では音声データを直接スケッチ上に書くというスマートとは言い難い方法でした。 今回は事前に SPIFFS へ保存した WAV ファイルを読み込んで再生します。
WAV ファイルの作成
まずは再生したい音声データを以下の形式の WAV ファイルへ変換します。
- モノラル
- サンプリング周波数8000Hz
- Unsigned 8-bit PCM
- メタデータなし
スピーカーが1つなのでモノラル、 M5StickC (というか ESP32) の DAC が 8 ビットなので WAV ファイルも 8 ビットです。 サンプリング周波数は 8000Hz じゃなくてもいいかもしれませんが、 一般的に使用されている 44100Hz ではうまく動作しなかったためこの値にしています。
また、今回のスケッチではメタデータを一切考慮していないため、 メタデータがあるとシリアルモニタへ “invalid wave file header” というエラーメッセージが表示されファイルが読み込まれません。
以下は FFmpeg で変換する場合のコマンド例です。 FFmpeg で変換すると「Lavf58.29.100」(数字部分はバージョンによる) というメタデータが標準で追加されるので、 オプション -fflags +bitexact を付けてこの動作を抑制します。
ffmpeg -i input.wav -ac 1 -ar 8000 -acodec pcm_u8 -fflags +bitexact output.wav
WAV ファイルを SPIFFS へ保存する
ESP32-WROOM-32 SPIFFS アップローダープラグインの使い方 | mgo-tec電子工作 に書かれている手順に従い、 Arduino ESP32 filesystem uploader を使用して事前に WAV ファイルを SPIFFS へ保存しておきます。
スケッチの書き込み
以下のスケッチを M5StickC へ書き込みます。 WAVE_FILE_NAME は SPIFFS へ保存した WAV ファイルのファイル名です。 書き込み後、Aボタン(正面の「M5」ボタン)を押すと WAV ファイルが再生されます。
参考サイト
M5StickC + Speaker Hat で音声データを再生する
M5StickC + Speaker Hat で音声や音楽を再生しようと思ったら 意外と情報が見つからなかったので再生方法をメモしておきます。
音声データの変換
まずは WAV や MP3 など再生したい音声データを 【Arduino】WAVまたはMP3ファイルを再生する - おもちゃラボ に書かれている方法で以下の形式へ変換します。
- モノラル
- サンプリング周波数8000Hz
- Unsigned 8-bit PCM
- ヘッダなし
配列化
その後C言語の配列に変換する必要がありますが、 Windows 環境では xxd コマンドがないため バイナリファイルをC言語のデータ配列に変換する:放課後マイコンクラブ:SSブログ の「PROGMEM作蔵さん」を使用して変換しました。
スケッチへ貼り付けて書き込み
配列ができたら以下のスケッチの SOUND_DATA 部分に貼り付け、M5StickC へ書き込みます。 Aボタン(正面の「M5」ボタン)を押すと音声データが再生されます。
playMusic 関数は公式の サンプルスケッチ のものですが、 そのままでは音声が正常に再生されなかったため ledcWriteTone から ledcWrite へ変更しています。 (公式のサンプルスケッチが間違ってるとは思わなかったのでここでハマった。)
今回は短い音声の再生だったためスケッチにそのまま配列として書きましたが、 音声データ部分だけで500行を超えましたし、 配列への変換も面倒なのでファイルから読み込むようにしたいですね。 SPIFFS を使えば実現できそう。
参考サイト
RedHat5.7からCentOS5.7へ移行する
RHEL 5.7 の物理サーバをクローンして仮想化する際、ライセンス的に問題がありそうなので CentOS 5.7 へ移行した話。
公式ドキュメント
Migration an existing system from RHEL5 to CentOS 5
実際の作業
基本的に上記公式ドキュメントのコマンド通り。 パッケージのダウンロード元サーバが変更になっているのと、OS のバージョン、CPU アーキテクチャが違うので手直ししている。CPU アーキテクチャは uname -a で確認できる。
$ curl -O http://vault.centos.org/5.7/os/x86_64/CentOS/centos-release-5-7.el5.centos.x86_64.rpm
$ curl -O http://vault.centos.org/5.7/os/x86_64/CentOS/centos-release-notes-5.7-0.x86_64.rpm
$ curl -O http://vault.centos.org/5.7/os/x86_64/CentOS/redhat-logos-4.9.99-11.el5.centos.noarch.rpm
$ su
# cp /etc/redhat-release /etc/redhat-release-saved
# rpm -e --nodeps redhat-release-notes redhat-release yum-rhn-plugin redhat-logos
# rpm -ivh centos-release-5-7.el5.centos.x86_64.rpm centos-release-notes-5.7-0.x86_64.rpm redhat-logos-4.9.99-11.el5.centos.noarch.rpm
# yum update
Loaded plugins: product-id, security, subscription-manager
Updating Red Hat repositories.
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/
removing mirrorlist with no valid mirrors: /var/cache/yum/base/mirrorlist.txt
Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again
yum update でエラーが出るので /etc/yum.repos.d/CentOS-Base.repo を編集。
- mirrorlistをコメントアウト
- #baseurl=http://mirror.centos.org/centos/$releasever/ を baseurl=http://vault.centos.org/5.7/ へ変更
再度 yum update したら完了。