2017年11月18日土曜日

HC-06でRN42のファームウェアを使う

だいぶ前に買ったHC-06っていうBluetoothモジュールがあるんだけど、このモジュールが秋月で売っているMicrochipのRN42というBluetoothモジュールのファームウェアが使えるということなので試してみた。

HC-06もRN42もCSRのBC417っていうチップを搭載してるらしい。
左からHC-06、Vgateに入ってたやつ(形式不明)、Microchip RN42である。
RN42は秋月で1800円だった。

他にもHC-05とかBC-04とかあるみたいだけど、どれもHC-06とハードは同じでソフトが微妙に違うとか?
さらに同じHC-05でもハードが違うやつもあるらしい?
まぁたしかにHC-06とVgateに入ってたやつはICは同じような配置だけど周辺部品が微妙に違う感じが。

RN42は何がいいかというと、HIDプロファイルが使える!
さらにHC-06では使えないマスター(親機)にもなれるし、ボーレートの設定の自由度があがるみたい。
HIDモードはシリアル通信で外部のマイコンから制御しないとだめだけど、ゲームパッドやキーボードになれる模様。

早速書き換え。
書き換え手順はネットで探せば結構出てくるけど、簡単に言うとCSRの書き換えツールでRN42のファームウェアをダンプして、書き換え対象のHC-06とかHC-05からも一応ファームウェアをダンプ、PSKEYもダンプしてからRN42のファームを焼いて基板固有の一部のPSKEYを書き戻すといった感じ。

今回はライターとして前回作ったCSR-SPI-FTDIを使用した。
まずはRN42からファームをダンプ
CSR-SPI-FTDIとは以下のように接続
  SPI_MOSI   → RI
  SPI_CLOCK → RTS
  SPI_MISO   → DSR
  SPI_CSB     → DTR

BlueFlash.exeを起動して
Stop Processorを押してからDumpボタンでファームウェアを保存。
保存が終わったら次にHC-06などの書き換え対象につなぎ替える。
これまたピン配置が違うので面倒だけど…
なんかあってももとに戻せるようにまた同じように
Stop Processorを押してからDump。次にStart Processorを押してからBlueFlashを閉じる。

PSTool.exeを起動して
File→DumpをクリックしてPSKEYをダンプする。
そしたらまたBlueFlash.exeを起動してStop Processorを押してから
Choose FileでRN42からダンプしたファイルを選択してDownloadボタンを押す。
これでRN42のファームウェアがHC-06に書き込まれる。
Start Processorを押してからBlueFlashを終了する。

あとはHC-06基板固有のPSKEYを書き戻す。
先程ダンプしたPSKEY(拡張子がpsr)をテキストエディタなどで開いて

// PSKEY_BDADDR
&0001 = xxxx xxxx xxxx xxxx
// PSKEY_ANA_FTRIM
&01f6 = xxxx
// PSKEY_ANA_FREQ
&01fe = xxxx

のようにこの3つ(6行分)の値だけを残してほかを消去して保存。
PStool.exeを開いてFile→Margeでマージして完成。
これであとはRN42として動くはず。

これで手持ちのHC-06とRN42間での通信もできるな。
ADM3202とか繋げば安価でREX-BT60互換なRS-232C変換アダプタとか作れそう。
ちなみにデバイス名が最初コピー元のRN42と一緒になってしまうので注意。
今回移植したファームウェアは旧版の6.15だった…
最新は6.30らしい?RN42-I/RM630買えばFWが6.30だったぽい…

2017年11月8日水曜日

DuinoFun UHS miniを買ってみた

Arduino用のUSB Host ShieldのArduino Pro mini版のクローンを買ってみた。
Circuits@HomeのUSB host mini r1.0のコピーっぽい?MAX3241Eは3.3V駆動なので、レベル変換がついてないUSB host miniは3.3V駆動のArduino Pro mini用に作られてるっぽい。
結局重ねて使うことも無いと思うしESP32とかでも使ってみたいのでピンヘッダを必要最低限にしてみた。

V_BUSとVCCはパターンカットで切り離して、V_BUSに5V、VCCに3.3Vをわけれ入れられるようにした。
そうしないと3.3Vで動くUSBデバイスしか動かせないし…

これならブレッドボード上でArduino Pro Micro以外でも試せそう。
一応Arduino Pro microで動作確認。

ライブラリはUSB Host Shield Library 2.0を使用した。
とりあえずこの環境での動作は問題なさそうなので今度は別なマイコンでも試してみたいなぁ

2017年11月4日土曜日

recfsusb2nで外付けカードリーダを使ってみる

recfsusb2nはそのままの状態でビルドすると内蔵カードリーダー使うんだけど、このまえPX-BCUDをラズパイで使えるようにしたときにNTTのカードリーダも使えるようにしたので、PT3みたいに4チューナー1枚のカードで行けるようにしたらKTV-FSUSB2側のカードと共用できないかな?とか思ったり。
さらに新しめのWindows用のBondriver_fsusb2nでも内蔵のカードリーダが廃止されていたりしているのでUSBコントローラICの負荷も減ってドロップ減らないかなぁ?

PX-BCUDのセットアップのときに必要なファイルを準備していたので前回CATV対応してrecfsusb2nをビルドしたときのmakefileだけを変更してmakeし直してみた。

とりあえずmakefileを開いてifdef B25の下の
B25_PATH
B25_CLEAN
B25_OBJS_EXT
この3つの行をコメントアウト。
そんでもって
B25_LIBSの行の最後に -larib25を追加するだけ。
ifdef B25
#	B25_PATH = ./arib25
#	B25_CLEAN = clean_b25
	B25_OBJS = B25Decoder.o
#	B25_OBJS_EXT = $(B25_PATH)/arib_std_b25.o $(B25_PATH)/b_cas_card.o $(B25_PATH)/multi2.o $(B25_PATH)/ts_section_parser.o
	PCSC_LDLIBS ?= `pkg-config libpcsclite --libs`
#	B25_LIBS = $(PCSC_LDLIBS) -lm
	B25_LIBS = $(PCSC_LDLIBS) -lm -larib25
endif;
ifdef B25のところだけを抜粋するとこんな感じに編集。
あとは前回makeしたやつが残っていたのでmake cleanしてから
make
sudo make install
で完成。

これで内蔵カードリーダ用に改変されたarib25を使わずに、前回ビルドしたarib25を使うようになるのでPX-BCUDとカードリーダーを共用できた。pcsclite経由でNTTのカードリーダを使うことにより内蔵カードリーダへのアクセス減った分ドロップも減るといいなぁ

あと内蔵カードリーダーのときはBCAS抜けてると録画うまく行かない事があったんだけど(B25のエラー判定で躓く?)外付けカードリーダーにしてからカード入ってない時にB25なしでスムーズに録画してくれるようになった。
バグだったのかな?

2017年11月3日金曜日

Orange Pi PCにArmbianを入れてKernel 4.xを使ってみた

久しぶりにRaspberry Piを引っ張り出してきたんだけど、そういえばOrange Pi PCでも同じことできるんじゃないかということで久しぶりにOrange Pi PCを引っ張り出してきた。
以前はテレビに繋いで使ってたんだけどFireTV Stick2が来てから全然使ってなかったし。

ディストリビューションはArmbianを使ってみることに。Armbianは今のところデフォルトでKernel 3.4系みたいだけど、PX-BCUDはカーネル4.7以降だとカーネルモジュールが組み込まれているようなのでArmbianのNightly Buildに切り替えて、カーネルを入れ替えてみた。

まずはarmbian-configでNightly Buildに切り替える。

sudo  armbian-config

これでSystemの設定から変更することができる。
少し時間がかかる。

古いバージョンを消去する。
sudo aptitude remove ~nlinux-dtb ~nlinux-u-boot ~nlinux-image ~nlinux-headers
sudo aptitude remove ~nlinux-firmware ~narmbian-firmware ~nlinux-$(lsb_release -cs)-root 1 aptitude remove ~nlinux-firmware ~narmbian-firmware ~nlinux-$(lsb_release -cs)-root
(勝手に改行されてるけど2行です…

あとは新しいバージョンのカーネルやヘッダをインストール。

sudo apt-get install linux-image-dev-sun8i linux-dtb-dev-sun8i linux-headers-dev-sun8i
sudo apt-get install linux-u-boot-orangepipc-dev linux-$(lsb_release -cs)-root-dev-orangepipc
sudo apt-get install sunxi-tools swconfig a10disp
sudo reboot

これで再起動後にカーネル4.11.12で起動した。
H3のカーネル4.xはまだ使えないモジュールがあったり不安定だったりするのでまだまだだろうけど、一応Raspberry Pi同様にPX-BCUDを動かすことができた。

ただなんかVLCでhttpストリーミングしてるとOrange Pi PCが落ちるんだよなぁ…
何が悪いんだろ…