aliexpressでBT5.0と称するBluetoothアダプタを買ってみたら4.0でしか動かなかった

aliexpressにてとても安いBluetooth 5.0アダプタがあったので2種類買ってみた。

2個あわせて4.52ドルというお値段なので、BT5.0ってほんとなの?と思いつつ発注。

画像

届いたので、Windows10 1909にさして、Microsoftの「PC に搭載されている Bluetooth のバージョンを確認する」に書かれている通りに確認してみると・・・

画像

LMPはどちらも6.x

画像

ということで、LMP6.xなのでBluetooth 4.0とのこと。

パッケージに書かれているURL https://launchstudio.bluetooth.com/ListingDetails/75270 を見てみると、Barrot というメーカのBR80xx系のチップを使っているらしい。

チップとしてはBluetooth 5.0で動いてもよさそうな雰囲気はあるものの、「Supported Layers  4.0 Host Controller Interface」って5.0で設定されてないのでは?疑惑。

そもそも製造メーカが「Barrot」じゃなくて「Cambridge Silicon Radio」として認識されるのおかしくない?

Ubuntuにさしてみると、どっちもUSBデバイスとして認識するが、Bluetoothが動作しない。

画像

hciconfig hci1 upとかやっても起動してくれない。

調べて見ると「Unable to power up Bluetooth dongle」「Bug 60824 – [PATCH][regression] Cambridge Silicon Radio, Ltd Bluetooth Dongle unusable」Linuxでの動作はいろいろ問題を抱えているらしい。

いろいろ調べて見ると同じような見た目だけどBluetooth 5.0として認識されている事例を発見

拆解$19的Bluetooth 5.0 Dongle」(下記画像は引用したもの)

うちの小さい方のパッケージと同じで、中身がでっかい方と同じに見える、というもの。

これは「HCI 9.2064 / LMP 9.8978」で認識されているようだ。そして、デバイス名が「CSR8510 A10」で認識されている。

私のデバイスの「HCI 6.12576 / LMP 6/8891」でデバイス名は「BT DONGLE10」で認識されている。

書かれているfirmware的なものが違うんだろうか?

とりあえず、aliexpressには払い戻し申請中です。

追記…いろいろ苦労しましたが返金に成功しました。

PinePhoneをpostmarketOSで使う

PinePhoneをpostmarketOSで使うためのまとめ

使うイメージについて

Images for the PinePhone」からimgファイルをダウンロードして、microSDに書き込むことで使える様になるが、使ったmicroSDのサイズにあわせてパーテーションを調整してくれないのが微妙なところです。

上記サイトからダウンロードする際は「-plasma.img.xz」となっているKDE Plasma Mobileベースのものを利用するのがお勧めです。

なお、「-phosh.img.xz」はGNOMEベースのLinuxフォンLibrem 5用に開発されているものを使用しています。

使うmicroSDの容量にあったパーテーション割りを希望する場合は、Linux上でpostmarketOSのOS用microSD書き込み環境を作成して書き込む必要があります。

pmbootstrapによるmicroSD作成

まず「Installing pmbootstrap」にある手順を実施します。

ベースOSを何にしろ、と特に書いてなかったので、とりあえずUbuntu 18.04LTSでインストールして構築しました。

次に、「Installation guide」の手順でカスタマイズと書き込みを行います。

注意点として「pmbootstrap init時の User interface 設定」があります。

これをデフォルトの「watson」で設定してしまうと、タッチインタフェースだけでは操作できない環境となってしまいます。 「User interface [weston]: plasma-mobile-extras」 で設定しましょう。

また、途中にパスワードについては、2020年2月10日現在、数字パスワードである必要があります。これは現時点でのロック解除画面が数字入力のみ対応であるためです。(PinePhone Software Release より)

画像

LTEの使用方法

GUIのSettingにある「Mobile Broadband」項目は正常に動作しません。

現時点では、Terminalを開いてコマンドを入力する必要があります。

$ sudo ofonoctl poweron
10秒ぐらい待つ
$ sudo ofonoctl wan --connect --append-dns

楽天モバイルの無料サポータープログラムの楽天回線SIMだとAPN設定をいれなくても使えました。

ただし、postmarketOSは標準設定でusb0に172.16.24.0/16のIPアドレスを割り当てています。このIPアドレス帯を楽天モバイルでは使っていて、特にDNSサーバが172.16.206.0/24にあったりするので、名前解決ができないという事態になりました。

このためterminalから「sudo ip link set usb0 down」を実行し、usb0を使えなくすることで対処しています。

ofonoctlコマンドの覚え書き

回線の接続状況確認「ofonoctl」

データ通信の接続状況確認「ofonoctl wan」

WiFiの使用方法

GUIのSettingにある「Wi-Fi」から接続設定はできます。

わかりにくいのですが、各SSIDを選択し、パスフレーズを入力した後に、なにやらパスワード入力を求められます。

これは、パスフレーズを保存するためのパスワードなので、適当に何かを設定します。

WiFi選択画面の下記ボタンをクリックすると、WiFiがOFFになります。

アップデートとインストール

postmarketOSのアップデートは「sudo apk update」と「sudo apk upgrade」で行います。

パッケージ検索は「sudo apk search 検索ワード」、パッケージインストールは「sudo apk add パッケージ名」でインストールできます。

うちの環境では標準のAngelfish Web Browserが全然動作してくれません。

「sudo apk add font-noto-cjk」 「sudo apk add firefox」 で日本語表示対応のFirefoxをインストールすることができます。

画像

GL.iNet GL-MV1000でDynamic DNSが動かない

GL.iNet GL-MV1000のlcuiの方でdyn.comのDynamic DNSを設定したのだが、再起動時に自動実行してくれない。

設定画面としては下記の様になっている。

Enabledにチェックが入っているので、自動起動してもよさそうなのだがしていない。

とりあえず起動の仕組みをさぐるため、ルータにrootでログイン。

とりあえず「/etc/init.d」にはどんなファイルがあるのか確認してみると「ddns」というソレっぽいファイルが。

root@GL-MV1000:~# ls /etc/init.d
boot              firewall          gl_s2s            initswitch        openvpn           sysctl            usbmode
bootcount         firewall_gl       gl_tertf          led               qosswitch         sysfixtime        vpn-service
clear_flag        gl_fixdomain      gl_udp_server     lighttpd          relayd            sysntpd           wireguard
cron              gl_init           glcrond           log               rpcd              system            wireguard_server
ddns              gl_monitor        glfw              modem-init        samba             ucitrack
dnsmasq           gl_mqtt           glqos             mwan3             smstools3         uhttpd
done              gl_mv1000         gpio_switch       network           startvpn          umount
dropbear          gl_route_policy   haveged           odhcpd            stubby            urandom_seed
root@GL-MV1000:~#

/etc/rc.dには「S95ddns」と「K10ddns」(どちらも/etc/init.d/ddnsへのシンボリックリンク)

root@GL-MV1000:~# ls /etc/rc.d
K10ddns              S00sysfixtime        S19dnsmasq           S50glfw              S95ddns              S99lighttpd
K10gpio_switch       S10boot              S19dropbear          S50stubby            S95done              S99startvpn
K50dropbear          S10gl_mv1000         S19firewall          S60samba             S96led               S99urandom_seed
K51stubby            S10system            S19mwan3             S70modem-init        S98sysntpd           S99wireguard
K85odhcpd            S11sysctl            S20network           S80gl_tertf          S99bootcount         S99wireguard_server
K89log               S12log               S20usbmode           S80relayd            S99gl_monitor
K90network           S12rpcd              S21initswitch        S80ucitrack          S99gl_mqtt
K90sysfixtime        S13haveged           S35odhcpd            S90vpn-service       S99gl_route_policy
K98boot              S15gl_fixdomain      S50cron              S94gpio_switch       S99gl_s2s
K99umount            S18firewall_gl       S50glcrond           S94smstools3         S99gl_udp_server
root@GL-MV1000:~#

すでに/etc/rc.d/S95ddnsがあるので起動時から動作していても良さそうなのにしていない、ということはスクリプトの中で何らかの処理を行っているはず、ということで中身を確認。

root@GL-MV1000:~# cat /etc/init.d/ddns
#!/bin/sh /etc/rc.common
START=95
STOP=10
boot() {
return 0
}
reload() {
/usr/lib/ddns/dynamic_dns_updater.sh -- reload
return 0
}
restart() {
/usr/lib/ddns/dynamic_dns_updater.sh -- stop
sleep 1
enable=`uci -q get ddns.glddns.enabled`
if [ "$enable" = 1 ];then
        /usr/lib/ddns/dynamic_dns_updater.sh -- start
fi
}
start() {
enable=`uci -q get ddns.glddns.enabled`
if [ "$enable" = 1 ];then
        /usr/lib/ddns/dynamic_dns_updater.sh -- start
fi
}
stop() {
/usr/lib/ddns/dynamic_dns_updater.sh -- stop
return 0
}
root@GL-MV1000:~#

「start()」で「uci -q get ddns.glddns.enabled」の値を確認している。

root@GL-MV1000:~# uci -q get ddns.glddns.enabled
root@GL-MV1000:~#

現状は値が設定されていないため、起動していないようだ。

uciのパラメータを全部確認する場合は「uci -q show」で確認できるので、「uci -q show|grep dns.」を実行してみた。

root@GL-MV1000:~# uci -q show|grep dns.
ddns.global=ddns
ddns.global.ddns_dateformat='%F %R'
ddns.global.ddns_loglines='250'
ddns.global.upd_privateip='0'
ddns.myddns_ipv4=service
ddns.myddns_ipv4.lookup_host='yourhost.example.com'
ddns.myddns_ipv4.domain='yourhost.example.com'
ddns.myddns_ipv4.username='your_username'
ddns.myddns_ipv4.password='your_password'
ddns.myddns_ipv4.interface='wan'
ddns.myddns_ipv4.ip_source='network'
ddns.myddns_ipv4.ip_network='wan'
ddns.myddns_ipv4.service_name='dyn.com'
ddns.myddns_ipv4.enabled='0'
ddns.myddns_ipv6=service
ddns.myddns_ipv6.update_url='http://[USERNAME]:[PASSWORD]@your.provider.net/nic/update?hostname=[DOMAIN]&myip=[IP]'
ddns.myddns_ipv6.lookup_host='yourhost.example.com'
ddns.myddns_ipv6.domain='yourhost.example.com'
ddns.myddns_ipv6.username='your_username'
ddns.myddns_ipv6.password='your_password'
ddns.myddns_ipv6.use_ipv6='1'
ddns.myddns_ipv6.interface='wan6'
ddns.myddns_ipv6.ip_source='network'
ddns.myddns_ipv6.ip_network='wan6'
ddns.myddns_ipv6.enabled='0'
ddns.osakana=service
ddns.osakana.enabled='1'
ddns.osakana.lookup_host='********************'
ddns.osakana.service_name='dyn.com'
ddns.osakana.domain='********************'
ddns.osakana.username='********************'
ddns.osakana.password='********************'
dhcp.@dnsmasq[0]=dnsmasq
dhcp.@dnsmasq[0].domainneeded='1'
dhcp.@dnsmasq[0].boguspriv='1'
dhcp.@dnsmasq[0].filterwin2k='0'
dhcp.@dnsmasq[0].localise_queries='1'
dhcp.@dnsmasq[0].rebind_protection='1'
dhcp.@dnsmasq[0].rebind_localhost='1'
dhcp.@dnsmasq[0].local='/lan/'
dhcp.@dnsmasq[0].domain='lan'
dhcp.@dnsmasq[0].expandhosts='1'
dhcp.@dnsmasq[0].nonegcache='0'
dhcp.@dnsmasq[0].authoritative='1'
dhcp.@dnsmasq[0].readethers='1'
dhcp.@dnsmasq[0].leasefile='/tmp/dhcp.leases'
dhcp.@dnsmasq[0].resolvfile='/tmp/resolv.conf.auto'
dhcp.@dnsmasq[0].nonwildcard='1'
dhcp.@dnsmasq[0].localservice='1'
glconfig.ddns=service
glconfig.ddns.enabled='0'
luci.diag.dns='openwrt.org'
ucitrack.@dhcp[0].init='dnsmasq'
root@GL-MV1000:~#

ん?

「glconfig.ddns.enabled=’0’」?

もしかして、GL.iNet Admin Panelの方にある???

[アプリケーション]-[リモートアクセス]に「ダイナミックDNS」がありました。

有効化をしてみます

これにより「uci -q show|grep dns.」に大きな変化が・・・

root@GL-MV1000:~# uci -q show|grep dns.
ddns.global=ddns
ddns.global.ddns_dateformat='%F %R'
ddns.global.ddns_loglines='250'
ddns.global.upd_privateip='0'
ddns.global.use_curl='1'
ddns.osakana=service
ddns.osakana.enabled='1'
ddns.osakana.lookup_host='*******************'
ddns.osakana.service_name='dyn.com'
ddns.osakana.domain='*******************'
ddns.osakana.username='*******************'
ddns.osakana.password='*******************'
ddns.glddns=service
ddns.glddns.interface='wan'
ddns.glddns.check_interval='10'
ddns.glddns.check_unit='minutes'
ddns.glddns.force_interval='60'
ddns.glddns.force_unit='minutes'
ddns.glddns.ip_url='http://checkip.dyndns.com'
ddns.glddns.ip_source='web'
ddns.glddns.password='*******************'
ddns.glddns.username='*******************'
ddns.glddns.domain='cx0f702.glddns.com'
ddns.glddns.param_enc='cx0f702'
ddns.glddns.lookup_host='cx0f702.glddns.com'
ddns.glddns.service_name='glddns.com'
ddns.glddns.update_url='http://[USERNAME]:[PASSWORD]@ddns.glddns.com/nic/update?hostname=[PARAMENC]&myip=[IP]'
ddns.glddns.enabled='1'
dhcp.@dnsmasq[0]=dnsmasq
dhcp.@dnsmasq[0].domainneeded='1'
dhcp.@dnsmasq[0].boguspriv='1'
dhcp.@dnsmasq[0].filterwin2k='0'
dhcp.@dnsmasq[0].localise_queries='1'
dhcp.@dnsmasq[0].rebind_protection='1'
dhcp.@dnsmasq[0].rebind_localhost='1'
dhcp.@dnsmasq[0].local='/lan/'
dhcp.@dnsmasq[0].domain='lan'
dhcp.@dnsmasq[0].expandhosts='1'
dhcp.@dnsmasq[0].nonegcache='0'
dhcp.@dnsmasq[0].authoritative='1'
dhcp.@dnsmasq[0].readethers='1'
dhcp.@dnsmasq[0].leasefile='/tmp/dhcp.leases'
dhcp.@dnsmasq[0].resolvfile='/tmp/resolv.conf.auto'
dhcp.@dnsmasq[0].nonwildcard='1'
dhcp.@dnsmasq[0].localservice='1'
glconfig.ddns=service
glconfig.ddns.enabled='0'
glconfig.ddns.check_status='1'
glconfig.ddns.ddns_enabled='1'
glconfig.ddns.http_enabled='0'
glconfig.ddns.https_enabled='0'
glconfig.ddns.ssh_enabled='0'
luci.diag.dns='openwrt.org'
ucitrack.@dhcp[0].init='dnsmasq'
root@GL-MV1000:~#

そして、luciの方も無事Dynamic DNSが起動している状態となりました。

また、GL.iNetの提供するDynamic DNS(glddns)もあわせて有効になっています。

GL.iNet GL-MV1000をフレッツ光ネクストのIPv6網に接続した

GL.iNet GL-MV1000をバッファロー WSR-2533DHP2-CBのルーター機能の代わりに導入した。

うちはいまだにフレッツ光ネクスト+IPv6オプション環境なので、どうなるかなぁ?と思ったら標準設定ではIPv6での接続がうまくいかなかった。(注:BIGLOBE側の契約表記が「Bフレッツ マンションタイプ」のままなんだけど、フレッツ側の契約を確認してみるといつの間にか「フレッツ 光ネクスト」に切り替わっていた)

どうすればいいのかな?とググったら「フレッツ光 + OpenWrt で IPv6 を使う」に書いてある通りのことで対応できた。

GL.iNet GL-MV1000の標準状態で DHCPv6 クライアント の設定までは行われていたので、 /etc/config/dhcp のファイルを編集するだけで済んだ。

変更するためにはsshでアクセスして、rootユーザでログインすればOK

#初期状態
<略>
config dhcp 'lan'
	option interface 'lan'
	option start '100'
	option limit '150'
	option leasetime '12h'
	option force '1'
	option dhcpv6 'server'
	option ra 'server'

config dhcp 'wan'
	option interface 'wan'
	option ignore '1'
<略>

lanのところのdhcpv6とraの「server」を「relay」に変更し、ndpを追加

wan6を新規で追加し、項目を追加

# BフレッツIPv6対応
config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option limit '150'
        option leasetime '12h'
        option force '1'
        option dhcpv6 'relay'
        option ra 'relay'
        option ndp 'relay'

config dhcp 'wan'
        option interface 'wan'
        option ignore '1'

config dhcp 'wan6'
        option dhcpv6 'relay'
        option ra 'relay'
        option ndp 'relay'
        option master '1'

参考にしたblogだとコマンドで「uci commit /etc/config/dhcp」を実行すればOKとあったが、うまく行かなかったので、ルータを再起動したところうまくいった。

なお、手動で変更したあと、luciのGUIを確認してみたが、変更された項目はなかったので、「 Powered by LuCI openwrt-19.07 branch (git-19.218.48058-9177466) / OpenWrt 19.07-SNAPSHOT r10273-2b88d02」「GL-MV1000 version 3.027」ではGUIの変更ができないようでした。

会津バスのスマートバス停を見てきた(PAPERCAST製品利用例

2018年2月に会津バスでスマートバス停が実証試験を始めるというニュースがあった。

(注: 2022年5月時点では物理的に設置はされているものの稼働していませんでした。詳しくは後述)

インプレス:「会津バスに「スマートバス停」、KDDIなど導入支援――LPWA・電子ペーパー活用で外部電源不要
みちのりホールディングズ:「みちのりホールディングス(会津バス)など会津若松市内で国内初となる次世代スマートバス停の実証実験を開始
会津バス:「会津若松市内で国内初となる次世代スマートバス停の実証実験を開始します。

2018年2月17日より運用を始め、設置した2種類をベースに新しいものを2018年4月から1年間で開発する、的なリリースになっていた。

さすがにもう無くなったかな?と会津バスのtwitterアカウントに聞いて見たところ、実用化に課題があるため実証期間を延長し、まだ運用されているとの回答をもらったので見に行ってみた。

まず、見に行ったのは神明通りバス停。

ちょっと離れたところから、会津若松駅方面のバス停をみたところ、なさそうに見えたので、TSUTAYA前の鶴ヶ城方面のバス停を見てみる。

めっちゃ普通のバス停しかない。

おやー?と思ってもう1回会津若松駅方面のバス停の方を見てみると・・・

おや?奥にもう1つバス停がある?

ありました。

2連タイプのバス停です。

ただし、バスロケーションシステムは稼働していませんでした。

まず、時刻表の表示位置が低すぎるのと、文字が細すぎるの2点があるため、バス停の前でしゃがまないと時刻表を読むのが困難でした。

そして、しゃがんでもなお、注意書きとか細かな経路違い表示とかの文字が小さすぎるし、文字の濃淡が薄すぎて読めない・・・

スマートバス停の後ろ側に普通の時刻表がありましたが、こっちのがハッキリしてて見やすいですね。

横に出てるのはLWPAのアンテナなのかな?

ここについているカメラは何の役割なのかな?

バス停の前に立ったらE-Ink表示のリフレッシュが走ったので人感センサーを兼ねてたりするのかな?

時刻表の下にある銀色の丸スイッチを押すと画面のリフレッシュ処理が実行されました。

続いて、鶴ヶ城入口のバス停まで移動・・・

こちらは会津若松駅から来るバスが止まるバス停にありました。

こちらの1画面タイプは、時刻表の表示位置も適切で、表示内容も比較的見やすい感じでした。

よこからみるとこれくらいの大きさで、まぁ、実際に設置するならこれくらいがいいんじゃないかなぁ、と感じました。

こちらのバス停は「PAPERCAST」というロゴが入っていました。

調べて見ると「PAPERCAST E-Paper Bus Stop Passenger Information Display」という既存製品でした。

2画面タイプのもとになっているのでは?というものもありました。

元々WiFi/3G/LTEモジュールを組み込む前提の製品なようで、会津バスで導入するにあたり、LWPAモジュール連動と日本語表示カスタマイズを行ったようです。

PAPERCAST掲載のサンプル例には、日本のマス目レイアウトの1日の全体を表示するような時刻表は無く、次のバスまで何分、というものばかりでした。

顧客が必要なのは「次のバスまで何分」という表示を実現するには液晶だと電力消費が大きいので、E-Inkにする、という感じなのが、もともとのPAPERCAST製品のありかたであるようです。

日本みたいな1日全体の時刻表示のニーズがあまりないんでしょうかねぇ?

1日全体を表示するにはスペースがキツイ、という感じですね。

ちなみにPAPERCAST製品としては、使用するE-Inkディスプレイも、9.7インチ、13.3インチ、23インチ、32インチ、42インチ、57インチが選択できるようです。

このうち32インチモデルはカラー表示も可能なようです。

ハードウェアとしては問題なさそうですが、ソフトウェア面の課題が大きそうです。

はたして本格稼働はいつになることやら?


2022年5月時点の状況について

2022年5月4日に会津若松を訪れた際に現況を確認したところ、どちらのバス停も稼働していませんでした。

鶴ヶ城入口 バス停

神明通り バス停