SONY WH-1000XM6をBluetooth LE Audio LC3コーデックをサポートしたBluetoothトランスミッターFlooGoo FMA120と一緒に使ってみる

SONYのWH-1000XM6というヘッドホンを持っている。 これはBluetooth接続のヘッドホンで、通話用のマイクも搭載されている。 もちろんclassic BluetoothのHFPとかで、この通話用のマイクは利用できるのだが、 コーデックがSBCであり、音質は良くない。 もちろん、SBCで達成することのできる最高の音質になっているとは思うが…。

一方で、Bluetooth LE Audioもサポートしていて、LC3コーデックによる 通話も可能なことになっている。 ただ、これがHFPでLC3を使う拡張があったと思うので、それを使っているのか、 あるいは、LE Audioには独自のマイクを扱うプロトコルがあるのかは、 全く理解できていない。

通話をせず、本当にヘッドホンとして音を聞きたい場合であれば、 A2DPを使えば良い。WH-1000XM6では、SBCだけでなくAACとLDACがサポートされているので、 AndroidのスマートフォンやAmazon Fireタブレット、iPhone、Windows 11 PCでも 良い音質で音を聞くことはできる。 ただ、ビデオを見ている場合には、基本的には音は遅延する。 LC3の場合には、音の遅延は小さくできることになっているはずである。

私の手元にあるデバイスで、LE Audioをサポートしているものはないので、 LC3を使った場合の音質や遅延について体感できずにいた。

LE Audioは何年か前のBluetooth 5系統の仕様で定められているはずで、 多くのBluetoothホストコントローラーはそのバージョンのBluetoothの 仕様を実装済みのはずである。 ただ、LE AUdioはA2DPのように後からBluetoothスタックに付け足してサポートできず、 Bluetoothをスタックに大きく手を入れないと実装できないと 聞いた気もする。 そのせいかは分からないが、LE Audioが使えるようになるUSB接続の Bluetoothドングルというのも売られているようには見えない。 Bluetooth 5.4対応のBluetoothドングルというを買ってみたが、LE Audioをサポートしてはいなかった。

では何が売られているかと言うと、種類数は少ないのだが、トランスミッター と呼ばれる機器が売られている。 これは、USBでPC等に接続するデバイスで、PCで動くOSからは、 USB Audio classのデバイスとして見え、そのトランスミッターが独自に LE Audio機器とペアリングするというものである。 LE Audioの登場する前から、種類数は少ないが、こういうデバイスは売られていて、 私もCreative製のBT-W3を持っている。 だが、BT-W3はSBCとAptX Low Latency、AptX HD、AptXしかサポートしておらず、 私はAptX系のコーデックを利用するBluetooth機器は持っていないので、あまり役立てることはできなかった。

LE Audioをサポートするトランスミッターというのは数少なく、 どれもQualcommのチップを使っているようである。 Eppfun製のものは日本でも入手が容易で、比較的安価であるようだが、 ヘッドホン側もQualcommのチップを使っていないと、接続できないという コメントをどこかで見た気がする。

SONY WH-1000XM6がどのようなチップを使っているのか分かっていないが、 前世代のWH-1000XM5はXtensaのチップを搭載していたような気がする。 少なくともQualcommのチップが利用されていると期待できないように思われる。

と言うことでWH-1000XM6をサポートしていると明確に書かれているFlooGoo FMA120を購入してみた。 Amazon.comで購入すると、Amazon.co.jpより相当安く買えるので、Amazon.comで購入した。

結果としては、全く問題なくLC3コーデックで接続でき、遅延も気になることはなく、非常に満足している。 NetBSD/amd64-currentに接続したdmesgは以下のようである。 FMA120自体は、USB Audio Class 1.0のデバイスとして認識される。 FMA120の設定は、USB to RS-232Cコンバーターとして見えているデバイス経由で実施されるようだ。 Microsoft Storeでダウンロードできる設定アプリケーションは、これを使っているようだ。

ただ、このdmesgを見ると、FMA120もQualcommのチップを使っているようだ。 なので、EppfunのトランスミッターでWH-1000XM6をサポートできないという訳はなさそうだ。

NetBSD castella 11.99.3 NetBSD 11.99.3 (LEAFFOX1) #1: Wed Sep 24 11:21:54 JST 2025  ryoon@castella:/usr/world/11.99/amd64/obj/sys/arch/amd64/compile/LEAFFOX1 amd64 x86_64
(snip)
uhub10 at uhub1 port 1: Cambridge Silicon Radio (0x0a12) product 4010 (0x4010), class 9/0, rev 2.00/21.18, addr 3
uhub10: 4 ports with 0 removable, bus powered
uhidev6 at uhub10 port 1 configuration 1 interface 0
uhidev6: Qualcomm (0x0a12) QCC3086 USB Dongle (0x4007), rev 2.00/30.91, addr 4, iclass 3/0
uhidev6: 24 report ids
uhid17 at uhidev6 reportid 1: input=2, output=0, feature=0
uhid18 at uhidev6 reportid 2: input=2, output=0, feature=0
uhid19 at uhidev6 reportid 9: input=0, output=1, feature=0
uhid20 at uhidev6 reportid 23: input=0, output=1, feature=0
uhid21 at uhidev6 reportid 24: input=0, output=1, feature=0
uhidev7 at uhub10 port 1 configuration 1 interface 1
uhidev7: Qualcomm (0x0a12) QCC3086 USB Dongle (0x4007), rev 2.00/30.91, addr 4, iclass 3/0
uhidev7: 32 report ids
uhid22 at uhidev7 reportid 1: input=0, output=62, feature=0
uhid23 at uhidev7 reportid 2: input=16, output=0, feature=0
uhid24 at uhidev7 reportid 3: input=0, output=0, feature=62
uhid25 at uhidev7 reportid 4: input=0, output=0, feature=62
uhid26 at uhidev7 reportid 5: input=0, output=254, feature=0
uhid27 at uhidev7 reportid 6: input=12, output=0, feature=0
uhid28 at uhidev7 reportid 7: input=0, output=446, feature=0
uhid29 at uhidev7 reportid 8: input=446, output=0, feature=0
uhid30 at uhidev7 reportid 9: input=11, output=0, feature=0
uhid31 at uhidev7 reportid 32: input=0, output=0, feature=255
uaudio0 at uhub10 port 1 configuration 1 interface 2
uaudio0: Qualcomm (0x0a12) QCC3086 USB Dongle (0x4007), rev 2.00/30.91, addr 4
uaudio0: ignored descriptor type 11 subtype 5
uaudio0: audio rev 1.00
audio2 at uaudio0: playback, capture, full duplex, independent
audio2: slinear_le:16 2ch 48000Hz, blk 11520 bytes (60ms) for playback
audio2: slinear_le:16 1ch 48000Hz, blk 5760 bytes (60ms) for recording
spkr3 at audio2: PC Speaker (synthesized)
wsbell at spkr3 not configured
umodem0 at uhub10 port 1 configuration 1 interface 5
umodem0: Qualcomm (0x0a12) QCC3086 USB Dongle (0x4007), rev 2.00/30.91, addr 4, iclass 2/2
umodem0: data interface 6, has CM over data, has break
umodem0: status change notification available
ucom1 at umodem0 portno 2

Metabaseで管理用のデータベース (application database) にPostgreSQLを使っている場合に、contribモジュールが必要だった

すっかり書くのを忘れてしまっていたのだが、 Metabaseを使っていて気付いたことがあった。

Metabaseは、分析対象のデータソースとは別に管理用のデータベースを利用する。 これについては、 Configuring the Metabase application database に書いてある。 PostgreSQLを利用するのが推奨されているのだが、単にPostgreSQLサーバーを容易するだけだと、例えば新規ユーザーがLDAPの情報でログインする時に、 以下のようなエラーがウェブページ上に表示されてログインできない。

ERROR: could not access file "$libdir/citext": No such file or directory

私の場合にはpkgsrcでPostgreSQLサーバーをインストールしているので、pkgsrc/databases/postgresql*-contribもインストールすれば良い。 どこかにこのことは書かれているのだろうか…。

Softbank Airターミナル3 (B610s-77a)のブートメッセージをシリアルコンソールで見てみる

とあるリサイクルショップで、Softbank Airターミナル3を100円で買って来た。 Huawei Technologies Co., Ltd.製で、型番はB610s-77aと裏面に書いてある。

はるろいどの冒険日記 SoftBank Air ターミナル3で遊ぶ(準備編)によると、 底面のSIMカードスロットの隣にあるUSB micro B端子にUARTの端子が出ているらしい。

USB端子の接点 UART
GND GND
D+ RXD
D- TXD

と言うことで、micro BとUSB Type-Cを両端に持ったUSBケーブルを底面のUSB micro B端子に差し込み、 秋月電子のUSBtype-CコネクターDIP化キット(全ピン版)にUSB Type-C側の端子を接続した。 更に、USBtype-CコネクターDIP化キット(全ピン版)の10番のD-ピンはTXDなので、 秋月電子のFTDI USBシリアル変換ケーブル(3.3V)の黄色の線のRXDに接続し、 9番のD+ピンはRXDなので橙色の線のTXDに、 8番のGNDピンはUARTでもGNDなので黒色のGNDに接続した。

FTDI USBシリアル変換ケーブル(3.3V)のUSB A端子をNetBSDマシンに接続して、ucom1として認識された。 以下のように実行して、115200 bpsで接続すれば、ブートメッセージを見ることができた。

# cu -115200 -l /dev/ttyU1
Connected

onchip
NF id boot!
NF ID 0x2CAC9026 0x54000000
NF pagesz 0x00001000B,pagenm 0x00000040,oobsz 0x000000E0B,ecc 0x00000018,addrnum 0x00000005,chipsz 0x00000200MB
Nand save 0x748B0142
UnSec_boot!mddrc init ok
13
src_addr :0x00080000
dst_addr :0x4FD00000
img_size :0x00030E5C
4
sec disable
56
  Start mic now ...
/proc/power_on open failed
start_mode = 0
ifconfig: SIOCGIFFLAGS: No such device
ATP_FOM_RET_OTHER_ERR err1
ATP_FOM_RET_OTHER_ERR err1
GlobeMac Init OK
NV_Read: Para is Error

 mac num={1,4,0,0,0,4}

 ATP_MIC_UpgValueChange ulDbInit=0
Load db now ...
now lAccessSemID [0] will be set to -1

 ATP_MIC_UpgValueChange ulDbInit=1
already config sync cFlags:2

 mic web [/usr1/z00425786/z00216571/B610MR/vendor/hisi/modem/atpv2/vendor/atp/package/atp/libraries/private/ssp/mic/main/src/webmicadapt.c] [MicCheckPortInUse] [211] MicCheckPortInUse sscanf_s failed!


 mic web [/usr1/z00425786/z00216571/B610MR/vendor/hisi/modem/atpv2/vendor/atp/package/atp/libraries/private/ssp/mic/main/src/webmicadapt.c] [MicWebSocketInit] [249] MicWebSocketInit type is 0...

 mic web [/usr1/z00425786/z00216571/B610MR/vendor/hisi/modem/atpv2/vendor/atp/package/atp/libraries/private/ssp/mic/main/src/webmicadapt.c] [MicWebStartCreateSockTimer] [285] Start MicWebStartCreatSockTimer now ...

****ledservice wifi init.*****
******ledservice wps init.******n>>>>>>button_Create over&t;&t;&t;&t;&t;&t;&t;&t;&t;&t;
>>>>>>button_Create over&t;&t;&t;&t;&t;&t;&t;&t;&t;&t;
>>>>>>button_Create over&t;&t;&t;&t;&t;&t;&t;&t;&t;&t;
>>>>>>button_Create over&t;&t;&t;&t;&t;&t;&t;&t;&t;&t;
Info, init t_exit_cond. pid: 189
Init_sys_netlink completely!
mic enter message loop now.
Info, init t_exit_cond. pid: 238
Info, init t_exit_cond. pid: 236
Info, init t_exit_cond. pid: 235
Info, init t_exit_cond. pid: 245
Info, init t_exit_cond. pid: 239
Mode Switch:Mode=3
Mode Switch:Mode1_check_flag=0
get_antenna_enable 0
ready to load Wi-Fi ko...........
Wi-Fi driver used nvram file is B610s-77a.nvm
Info, init t_exit_cond. pid: 240
AT_Cnum excute fail!
##sendmsg return 16, errno 2.
************************Write db to flash now ...
done sync
enable iptv failed: Operation not supported on transport endpoint
========> macalgrithm_4RSVD failed, ulMacType = 80000335 ulConutIndex = 0 *ulMacTypes[4].pulMacnum = 0, ulLength = 32
EthGetCfgNum return 2
enable vport process status is 0
nvram file :/var/nvram/bcm43217_nvm.txt
enable iptv failed: Operation not supported on transport endpoint
ifconfig: SIOCGIFFLAGS: No such device
smuxctl: socket or ioctl error for rem: Invalid argument
Wanumtscms: func[    WUTR098IniDevice] line[520]Initial UMTS device
wl0.1: No such device
wl1.1: No such device
-l sh start /var/firewall_init.sh
ifconfig wl1 up

===========set tcpnodelay failed

===========set tcpnodelay failed

===========set tcpnodelay failed

  open led file err

===========set tcpnodelay failed
wl0.1: No such device
2
wl1.1: No such device
3
Sorry, rule does not exist.
Sorry, rule does not exist.
Wanumtscms: func[WUIniPrivateMobileDevice] line[ 99]E5 device initial
ChannelWanGuide...0..

deal with rules over...

Read ppp session flash area error.
  open led file errcms init ok.
set_sys_autosleep write data failed.
Wanumtscms: func[   WUAtserverMsgProc] line[172]Nofift dialup to start detecting signal
Wanumtscms: func[     WUDialupMsgProc] line[483]Wireless device service down srv=[1]

AT_Cnum excute fail!
AT_Cnum excute fail!
ip6tables: Bad rule (does a matching rule exist in that chain?).
Sorry, rule does not exist.
Sorry, rule does not exist.
Sorry, rule does not exist.
Sorry, rule does not exist.
wl0.1: No such device
wl1.1: No such device
Unable to chmod /var/atp_boot_track.log: No such file or directory
Start mic now ...
/proc/power_on open failed
start_mode = 0
iptables: Bad rule (does a matching rule exist in that chain?).
iptables: Bad rule (does a matching rule exist in that chain?).
ip6tables: Bad rule (does a matching rule exist in that chain?).
-l sh end /var/firewall_init.sh
ip6tables: Bad rule (does a matching rule exist in that chain?).
************************Write db to flash now ...
done sync
WPS: set msglevel to 0x0
Failed to open /var/devgpio

### wps_wfi_init(): <wl0_wfi_enable=0><wl1_wfi_enable=0><wl1.1_wfi_enable=(null)><wl0.1_wfi_enable=(null)>WFI is not enabled ###
--------------------------------------------------------------------
---------------------------Welcome To Cli---------------------------
--SBAir3, B610s-77aTCPU-V100R001B192D11SP00C643, 54:25:EA:24:60:99--
--------------------------------------------------------------------

Login: >>>>upnp Disalbed......
************************Write db to flash now ...
done sync
ifconfig wl0 up

  open led file err

Login incorrect!

Login:

.jm (ジャマイカ)のドメインを無料で取得してみた

ジャマイカの.jmドメインは、無料で取得でき、別にジャマイカに在住している必要はないと聞いた。 domain_name_form.txtに記載して電子メールで送付すれば良いらしい。 他のドメインのように登録は自動化はされていない。 と言うか、このファイルの末尾の記載は項目の番号がずれているような気がする。

返信はここには記載できないが、以下のような電子メールで、無事に取得できた。2025年5月30日に申請して、6月2日に登録された。

申請した電子メールアドレスから送信した電子メールでないと、例えばDNSサーバーの設定は変更できないようなので、永続的な電子メールで申請する必要があるようだ。

From: MYFIRST MYLAST <my@example.com>
Subject: XXXDOMAIN.XXX.jm domain registration
To: dmaster@ns.jm

Greetings,

My name MYFIRST MYLAST.
Please find the following .jm domain registration application.
Thanks in advance.

1.   Top-level domain................: .jm

2.   Complete Domain Name............: XXXDOMAIN.XXX.jm

3a.  Organization name...............: MYORG
3b.  Organization address............: MYADDRESS,
				       MYPREF, Japan

4.   Operational Date................: 2025-06-30 (or sooner)

Administrative Contact:
5a.  Name (Last, First)..............: LASTNAME, MYFIRST
5b.  Organization....................: MYORG
5c.  Postal Address..................: MYADDRESS,
				       MYPRES, Japan

5d.  Phone Number....................: +81-xx-xxxx-xxxx
5e.  Email Address...................: my@example.com

Technical/Zone Contact:
6a.  Name (Last, First)..............: LASTNAME, MYFIRST
6b.  Organization....................: MYORG
6c.  Postal Address..................:MYADDRESS,
				       MYPREF, Japan

6d.  Phone Number....................: +81-xx-xxxx-xxxx
6e.  Email Address...................: my@example.com

7a.  Primary DNS Server Hostname.....: ns1.XXXDOMAIN.XXX.jm
7b.  Primary DNS Server IP Address...: xxx.xxx.xxx.xxx
				       xxxx:xxxx:x:x:xxxx:xx:xxxx:xxxx
8a.  Secondary DNS Server Hostname...: ns2.XXXDOMAIN.XXX.jm
8b.  Secondary DNS Server IP address.: xxx.xxx.xxx.xxx
				       xxxx:xxxx:xxxx:xxxx:xxx:xx:xxx:xxx

9.   Domain/Org Purpose/Desc.: MYORG runs some services for communication
via the Internet. MYORG will use this domain for the services.

Notes: In Sections 3b, 5d, & 6d use multiple lines for addresses.
       If contacts are registered, only 5a and 6a are needed.
       If servers are registered, only 7a&b and 8a&b are needed.
       If there is more than one secondary server, just copy Section 8.

The party requesting registration of this name certifies that, to her/his
knowledge, 
the use of this name does not violate trademark or other statues.

Registering a domain name does not confer any legal rights to that name and
any disputes 
between parties over the rights to use a particular name are to be settled
between the 
contending parties using normal legal methods.
(See RFC 1591)

----------------------------------------------------------------
DOMAIN MASTER                         E-mail: dmaster@ns.jm

-- 
MYSIGNATURE

Arvel USBシリアルケーブルSRC06-USBをWindows 11 x86_64で使う

Arvel USBシリアルケーブルSRC06-USBをWindows 10 x86_64で使うで、Arvel (現バッファロー) のSRC06-USBというFTDIのチップを使ったUSB to Rs-232CアダプターをWindows 10で使う話を書いたが、同じSRC06-USBをWindows 11 x86_64でも使うことができた。

Windows 11 24H2の場合には、Windows Update経由でデバイスドライバーが配られているようで、特にデバイスドライバーをダウンロードしてインストールするといった作業は不溶で、接続するだけで利用できた。 認識されたデバイスのプロパティーのスクリーンショットを含めておく。

NetBSDからneocities.orgにウェブサイトを展開してみる

この記事は、NetBSD Advent Calendar 2024の25日目の記事です。

はじめに

NeoCitiesというウェブサイトのホスティングサービスがあります。 クラシックな感じな静的なファイルをホスティングしてくれるサービスですが、さすがにこの時代にftpでファイルを転送するというようなことはできません。 もちろん、ウェブサイトから操作できますが、使い勝手は良くありません。 ただし、APIがあるので、用意されている専用クライアントを使って、ファイルのアップロード等をすることができます。

これも、タイミングが悪くてpkgsrcにインポートできていないのですが、7月にはコミットしたいと思いますので、 使い方を書いておきたいと思います。

インストール

専用クライアントは、The Neocities CLIで公開されています。Rubyで書かれたクライアントです。 以下のようにインストールすれば良いでしょう。

# cd /usr/pkgsrc/www/ruby-neocities
# make install

私はpkgsrc/lang/ruby34からインストールしているRuby 3.4を使っていますので、 これで/usr/pkg/bin/neocities34コマンドがインストールできました。neocities34と実行すれば使い方は分かるでしょう。

おわりに

非常に遅れた最終日にふさわしい話題だったかどうかは不安ですが…。

NetBSDでEPUB形式の電子書籍を読んでみる

この記事は、NetBSD Advent Calendar 2024の24日目の記事です。

はじめに

EPUB形式の電子ファイルで、縦書きなものを読みたいと思います。 ですが、とりあえず既にインストールされていたpkgsrc/print/mupdfは、縦書きのEPUBファイルを正しく扱えないようです。 また、ルビ(よみがな)の扱いもうまく行かないようです。 pkgsrc/print/foliateであれば、縦書きも縦書きの時のよみがなの表示も正しいようです。 一部、扉ページの表示は正しくないようですが、本文を読むには支障はありません。

インストールと利用方法

以下のようにインストールをしたいと思います。

# cd /usr/pkgsrc/print/foliate
# make install

起動は、以下のようにします。 今回は、アジア諸国の現代文芸作品の日本語翻訳出版「アジアの現代文芸」シリーズからダウンロードできる 「ラオス現代文学選集」(ファイル名: rao_gendai.epub)を読んでみることにします。

$ foliate &

トラブル対処方法

私の環境も問題ですが、foliateがクラッシュして、再度起動させるとエラーが発生して再度正常に起動できないことがありました。 その原因が~/.config/glib-2.0/settings/keyfileというファイルが壊れている場合がありました。 常にこの原因とは限らないと思いますが…。

おわりに

NetBSDでも無事にEPUB形式の電子書籍ファイルを読むことができました。

SONY WH-1000XM6をBluetooth LE Audio LC3コーデックをサポートしたBluetoothトランスミッターFlooGoo FMA120と一緒に使ってみる

SONYのWH-1000XM6というヘッドホンを持っている。 これはBluetooth接続のヘッドホンで、通話用のマイクも搭載されている。 もちろんclassic BluetoothのHFPとかで、この通話用のマイクは利用できるのだが、 コーデックがSBCであり...