4月 142021
 

以前のエントリで「ThinkPad X13 AMD で利用する FreeBSD。」と、いうのを書きました。このときに利用した FreeBSD のバージョンは FreeBSD/amd64 12.1-RELEASE でした。その後 FreeBSD/amd64 12.2-RELEASE が出たときに試しましたが、やはり Renoir は認識せず、 xf86-video-scfb を使い続けていた状態なのでありました。

 
途中 13-CURRENT も試したりしましたが、カーネルと drm-kmod 辺りの相性が悪く、カーネルパニックになったりしてそこはかとなく悲惨な状態だったので利用を断念して RELEASE バージョンに戻した。と、いう雰囲気だったのであります。

さて、「ThinkPad X13 AMD のタッチパッド。」のエントリに書いていますが、drm-v5.0-fbsd12.1.zip を github から拾ってきて、自分でコンパイルして試したりしていますが、2021/04/14 にリリースされた FreeBSD/amd64 13.0-RELEASE は drm-kmod がバージョン 5 になっているのできっと動くだろうと思い早速トライしたのであります。

 
結果としては、見事に玉砕。最新の ports CURRENT でもカーネルパニックが発生しました・・。orz
ThinkPad X13 AMD はコツコツと BIOS (と、いうか UEFI) のバージョンアップがあるのでその影響が出たのかな? と、いう感じがします。

あ。FreeBSD の ports CURRENT を持ってこようとして svn update しようとしても、2021/04/02 で SVN サーバ上の更新が止まっていますね。しょうがないので git 経由 /usr/ports を更新することにしましょう。と、言いつつ、ウェブで色々探したのですが、一発目のコマンドイメージがどこにも書いてないですね・・。 /usr/src を持ってくる方法はあるのですが・・。と、いうことで、一発目に実行するコマンドイメージを探すのにずいぶんと苦労しました。
以下のコマンドを一回だけたたきます。

# cd /usr
# mv ports ports.svn
# git clone --depth 1 https://git.freebsd.org/ports.git /usr/ports
<以下略>

 
二回目以降は

# cd /usr/ports
# git pull
<以下略>

 
これで良いです。
問題なのは、一回目に実行する git clone がどこにも書かれていない。と、いうことですかねぇ・・。

 
と、いうことで最新の ports CURRENT が手に入りました。これで Renoir に必要な ports を各種インストールすることにします。
だいたいこの辺りをインストールすると良いのではないかと思われます。僕の場合は kde5 を利用しているので、関連する ports もドドドと、当然インストールされますが。

  • drm-fbsd13-kmod-5.4.92.g20210202
  • gpu-firmware-kmod-g20210224
  • xf86-video-amdgpu-19.1.0_1
  • mesa-dri-20.2.3_1
  • mesa-libs-20.2.3

 
続いて、各種設定です。

 
1. /etc/rc.conf

kld_list="amdgpu.ko"

 
amdgpu.ko をロードする設定を記載します。

 
2. /boot/loader.conf

hw.amdgpu.exp_hw_support="1"

hw.psm.elantech_support="1"
hw.psm.trackpoint_support="1"

hw.vmm.amdvi.enable=1

vmm_load="YES"
cpp_load="YES"

ntb_hw_amd_load="YES"
amdpm_load="YES"
amdsmb_load="YES"
amdtemp_load="YES"
amdsbwd_load="YES"

smbus_load="YES"
smb_load="YES"
intpm_load="YES"
ichsmb_load="YES"
imcsmb_load="YES"

iichid_load="YES"
iicsmb_load="YES"
iic_load="YES"
ig4_load="YES"

 
hw.amdgpu.exp_hw_support=1 を記載すると amdgpu が使えるようになります。他、デバイスドライバを認識させるカーネルモジュールも書いておきました;-)。

 
3. /usr/local/etc/X11/xorg.conf.d/06-driver.conf

Section "Device"
    Option      "DRI" "3"
    Option      "AccelMethod" "exa"
    Option      "MigrationHeuristic" "greedy
    Option      "TearFree" "On"
    Driver      "amdgpu"
    BusID       "PCI:5:0:0"
EndSection

 
Driver に amdgpu を指定します。 BusID は pciconf -lv | grep vga を叩いたときに表示される番号を指定します。
準備ができたので、再起動して動作を確認して root で startx だぁーーっ!!

が、カーネルパニック・・。 orz
シューリョー・・。 orz

 
そんなばかなぁ・・。とか、思いつつ色々悪あがきで設定を見直してみましたが、ダメでした・・。引き続き /usr/local/etc/X11/xorg.conf.d/06-driver.conf の Driver は scfb の利用を継続・・。

 
と、いうことで、問題は ports の graphics/drm-fbsd13-kmod であることは多分明白です。これは 13-CURRENT をインストールしていたときに確認しています。 drm-fbsd13-kmod が 5.4 なので、もっと新しいバージョンはないのか?

 
https://github.com/freebsd/drm-kmod/tree/5.5-wip

 
こちらです。 5.5 です。他に drm-kmod-5.5-wip-amd と drm-kmod-5.5-wip-amd-pr がありましたが、これらは make が通りませんでした。
drm-kmod-5.5-wip.zip をダウンロードしてきて make && make install します。そのとき、ports からインストールした graphics/drm-fbsd13-kmod がインストールされていても問題ありません。 drm-kmod-5.5-wip を make install して上書きします。

 
これで、準備ができました。上の設定を全て有効にして再起動します。起動したらすかさず startx を叩きます。

ちょっと長いですが、dmesg を貼り付けます。

amdgpu: [powerplay] smu driver if version = 0x0000000a, smu fw if version = 0x0000000e, smu fw version = 0x00374700 (55.71.0)
amdgpu: [powerplay] SMU driver if version not matched
amdgpu: [powerplay] dpm has been disabled
amdgpu: [powerplay] SMU is initialized successfully!
[drm] Display Core initialized with v3.2.56!
[drm] Connector eDP-1: get mode from tunables:
[drm]   - kern.vt.fb.modes.eDP-1
[drm]   - kern.vt.fb.default_mode
[drm ERROR :dm_helpers_parse_edid_caps] Couldn't read SADs: -2
[drm] Connector HDMI-A-1: get mode from tunables:
[drm]   - kern.vt.fb.modes.HDMI-A-1
[drm]   - kern.vt.fb.default_mode
[drm] Connector DP-1: get mode from tunables:
[drm]   - kern.vt.fb.modes.DP-1
[drm]   - kern.vt.fb.default_mode
[drm] Connector DP-2: get mode from tunables:
[drm]   - kern.vt.fb.modes.DP-2
[drm]   - kern.vt.fb.default_mode
[drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[drm] Driver supports precise vblank timestamp query.
[drm] VCN decode and encode initialized successfully(under DPG Mode).
[drm] fb mappable at 0x460BC7000
[drm] vram apper at 0x460000000
[drm] size 8294400
[drm] fb depth is 24
[drm]    pitch is 7680
WARNING: Device "fb" is Giant locked and may be deleted before FreeBSD 14.0.
VT: Replacing driver "efifb" with new "fb".
start FB_INFO:
type=11 height=1080 width=1920 depth=32
cmsize=16 size=8294400
pbase=0x460bc7000 vbase=0xfffffe010c9c7000
name=drmn0 flags=0x0 stride=7680 bpp=32
cmap[0]=0 cmap[1]=7f0000 cmap[2]=7f00 cmap[3]=c4a000
end FB_INFO
drmn0: fb0: amdgpudrmfb frame buffer device
drmn0: ring gfx uses VM inv eng 0 on hub 0
drmn0: ring comp_1.0.0 uses VM inv eng 1 on hub 0
drmn0: ring comp_1.1.0 uses VM inv eng 4 on hub 0
drmn0: ring comp_1.2.0 uses VM inv eng 5 on hub 0
drmn0: ring comp_1.3.0 uses VM inv eng 6 on hub 0
drmn0: ring comp_1.0.1 uses VM inv eng 7 on hub 0
drmn0: ring comp_1.1.1 uses VM inv eng 8 on hub 0
drmn0: ring comp_1.2.1 uses VM inv eng 9 on hub 0
drmn0: ring comp_1.3.1 uses VM inv eng 10 on hub 0
drmn0: ring kiq_2.1.0 uses VM inv eng 11 on hub 0
drmn0: ring sdma0 uses VM inv eng 0 on hub 1
drmn0: ring vcn_dec uses VM inv eng 1 on hub 1
drmn0: ring vcn_enc0 uses VM inv eng 4 on hub 1
drmn0: ring vcn_enc1 uses VM inv eng 5 on hub 1
drmn0: ring vcn_jpeg uses VM inv eng 6 on hub 1
[drm] Initialized amdgpu 3.36.0 20150101 for drmn0 on minor 0
WARNING !(mask != 0) failed at /usr/local/src/drm-kmod-5.5-wip/drivers/gpu/drm/amd/display/dc/dc_helper.c:53
#0 0xffffffff80e3f803 at linux_dump_stack+0x23
#1 0xffffffff83604b0b at set_reg_field_values+0x4b
#2 0xffffffff83604a83 at generic_reg_update_ex+0x53
#3 0xffffffff8353932c at dp_disable_link_phy+0x5c
#4 0xffffffff8353d176 at core_link_disable_stream+0x416
#5 0xffffffff835a2aac at dcn20_reset_hw_ctx_wrap+0x15c
#6 0xffffffff8355f46b at dce110_apply_ctx_to_hw+0x2b
#7 0xffffffff835469de at dc_commit_state+0x51e
#8 0xffffffff8351a23f at amdgpu_dm_atomic_commit_tail+0x4bf
#9 0xffffffff83302f86 at commit_tail+0x46
#10 0xffffffff83302366 at drm_atomic_helper_commit+0x1e6
#11 0xffffffff833059e9 at drm_atomic_connector_commit_dpms+0xd9
#12 0xffffffff83333e3e at drm_mode_obj_set_property_ioctl+0x15e
#13 0xffffffff8330de6b at drm_connector_property_set_ioctl+0x2b
#14 0xffffffff8332cab2 at drm_ioctl_kernel+0x72
#15 0xffffffff8332ce18 at drm_ioctl+0x2c8
#16 0xffffffff80e3d053 at linux_file_ioctl+0x2e3
#17 0xffffffff80c76ced at kern_ioctl+0x26d

 
一応、認識しました。やったーっ!!
ただし、下のほうの # で始まる行は定期的にログが出力されます。まぁ、しょうがないか・・。

 $ xrandr
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 16384 x 16384
eDP connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 293mm x 165mm
   1024x768      60.03 +
   1920x1080     60.03*+
   1680x1050     60.03  
   1280x1024     60.03  
   1440x900      60.03  
   1280x800      60.03  
   1280x720      60.03  
   800x600       60.03  
   640x480       60.03  
HDMI-A-0 disconnected (normal left inverted right x axis y axis)
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
DisplayPort-1 disconnected (normal left inverted right x axis y axis)

 
ディスプレイが eDP として認識されました。と、いうことは xrandr –output eDP –brightness 0.5 も使えて、画面の明るさも変えられるようになりました。

FreeBSD 13.0-RELEASE になって /boot/kernel/backlight.ko というのができて、こいつが画面の明るさを管理しているみたいですが、kldload backlight.ko すると「dmesg 見てみろ。」とか言われいまいち動作していないようです。が、コマンド的に /usr/bin/backlight 30 とかすると画面の明るさが変わります;-)。

 
と、いうことで、Renoir (それはつまりは Vega10 のことですね;-) が無事に動作するようになり、ホッと一安心。そして、画面設定やコンポジタの設定は KDE5 の 「KDE システム設定」から色々できます。嬉しいことです。

 
最後にですが、FreeBSD/amd64 13.0-RELEASE になって、 ThinkPad X13 AMD で Renoir の他に動くようになったモノ、まだ動かないモノなどについて記載しておきます。

  • Realtek のカードリーダ (RTS522A) が rtsx0 で認識して動くようになりました。
  • 音はスピーカーからもヘッドホン端子からも出ます。
  • CPU の温度が拾えるようになりました。
  • Intel Wi-Fi 6 AX200 はまだ動きません。
  • Suspend して Resume で起きても動きません。電源ボタン押すと shutdown はしてくれるようですが、ネットワークは利用できません。

 
こんな感じでしょうかねぇ。それにしても、再度書きますが、 Renoir (それはつまりは Vega10 のことですね;-) が動作するようになったのは嬉しいことです。
AMD Ryzen 7 PRO 4750U で Xorg を動かしたいけど、カーネルがパニックしてしまう。と、いう人は github から drm-kmod-5.5-wip.zip を取ってきてインストールして見るのも一つの手だと思います。

次は suspend/resume にトライだぁ;-)。

1月 062021
 

以前のエントリで、「Nginx + quiche パッチで HTTP/3 にチャレンジ。」と、いうのを書いています。このエントリの『続編』を書いてみたいと思います。

と、いうのも色々あったからです。

簡単に書くと、あっという間にこのエントリは終わってしまいますf(^^;;。
ネタ的なモノを箇条書きにしてみると

  • nginx + quiche パッチでは SSI は動作しません
  • nginx + quiche パッチを利用した場合 RTMP モジュールが利用できないです

の二つになります。これが解れば詳細はどうでもいー。と、いう人はここでおしまいです。
『なんで?』と思った方は読み進んでくださいf(^^;;。

 
まず、上の部分の SSI についてですが、perl による index.cgi で SSI で吐き出すことと同じ動作をするモノを作成すると、無事に動作します。

以下はサンプルです。これは index.cgi 。

#!/usr/local/bin/perl
use strict;
print "Content-type: text/html\n\n";
print "<html>\n<head>\n";
print "<META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html;charset=utf-8\">\n";
print "<TITLE>IPv6 HTTP/3 Access Web page.</TITLE>¥n";
print "</head>\n<body>\n";

print "<br><h2>Hello HTTP/3 World.</h2><hr>\n";

my $word = "";
if ($ENV{'REMOTE_ADDR'} =~ /:/) {
    $word  = "===> ";
    $word .= "$ENV{'REMOTE_ADDR'} から IPv6 パケットを受け取りました。";
} else {
    $word  = "===> ";
    $word .= "$ENV{'REMOTE_ADDR'} から IPv4 パケットを受け取りました。";
}
print "$word<br><hr>\n";;

print "===> Protocol: $ENV{'SERVER_PROTOCOL'}<br>\n<hr>";
print "===> Access Port: $ENV{'SERVER_PORT'}<br>\n<hr>";

exit;

 
似たようなのを index.shtml と access.cgi でやるとこんな感じ。

こちらは index.shtml。

<HTML>
<HEAD>
<META HTTP-EQUIV="Content-type" CONTENT="text/html;charset=utf-8">
<TITLE>IPv6 HTTP/3 Access Web page.</TITLE>
</HEAD>
<BODY>
<ht>
Hello HTTP/3 World.<br>
<hr>
<!--# include file="./access.cgi"-->
<hr>
</BODY>
</HTML>

 
こちらは access.cgi。

#!/usr/local/bin/perl
use strict;
print "Content-type: text/html\n\n";
my $word = "";
if ($ENV{'REMOTE_ADDR'} =~ /:/) {
    $word  = "===> ";
    $word .= "$ENV{'REMOTE_ADDR'} から IPv6 パケットを受け取りました。";
} else {
    $word  = "---> ";
    $word .= "$ENV{'REMOTE_ADDR'} から IPv4 パケットを受け取りました。";
}
print "$word<br><hr>\n";;
print "===> プロトコル: $ENV{'SERVER_PROTOCOL'}<br>\n<hr>\n";
print "===> アクセスポート: $ENV{'SERVER_PORT'}<br>\n";
exit;

 
index.html (index.shtml) に include があると、 Nginx + quiche パッチではまともに動作しないようです。 quiche パッチを詳しく追ってはいないのですが、どうやら include 部分がそげ落ちているようです・・。 orz

まぁ、今の段階では SSI を利用しないコンテンツを用意する必要がありそうです。

 
二個目。

テレワークなどで、PC にカメラを接続する機会が多いのですが、せっかく購入したカメラ。もっと色々な用途で使ってみたい。などと思うわけです。 USB Video Class 、俗に USB な UVC カメラを FreeBSD に接続し、 webcamd や obs-studio をインストールして『ストリーミングなどしてみんべ。』などと思うわけです。
このブログでも以前に「NotePCに付いているカメラを FreeBSD で使う。」と、いうのを書いていたりしますが;-)。

更に一歩進んで obs-studio をイントールした場合、配信先に RTMP サーバが必要になります。
Nginx はモジュールとして RTMP モジュールや Stream・Stream SSL モジュールなどを利用可能ですが、HTTP/3 を有効にする quiche パッチを適用した Nginx ではこれらのもジュールは利用できません。

以下は nginx.conf の設定の抜粋です。

load_module /usr/local/libexec/nginx/ngx_stream_module.so;
load_module /usr/local/libexec/nginx/ngx_rtmp_module.so;

rtmp {
    server {
        listen 1935;
        chunk_size 4096;

        access_log /var/log/nginx/access_rtmp.log;

        application webcam {
            live on;
            record off;
            wait_video on;
        }
    }
}

 
load_module のところで早くもエラーが出ます。

# service nginx start
Performing sanity check on nginx configuration:
nginx: [emerg] dlopen() "/usr/local/libexec/nginx/ngx_stream_module.so" failed (/usr/local/libexec/nginx/ngx_stream_module.so: Undefined symbol "SSL_set_tlsext_host_name") in /usr/local/etc/nginx/nginx.conf:7
nginx: configuration file /usr/local/etc/nginx/nginx.conf test failed

 
もしくは

# service nginx start
Performing sanity check on nginx configuration:
nginx: [emerg] dlopen() "/usr/local/libexec/nginx/ngx_rtmp_module.so" failed (/usr/local/libexec/nginx/ngx_rtmp_module.so: Undefined symbol "HMAC_CTX_new") in /usr/local/etc/nginx/nginx.conf:7
nginx: configuration file /usr/local/etc/nginx/nginx.conf test failed

 
みたいな感じ。

最初、どうして、SSL 系でエラーが出るのか解らなかったのですが、ports の www/nginx/Makefile とかソースを眺めていたら解りました。以前のエントリで、Nginx + quiche パッチを適用する場合 configure オプションに –with-openssl=/usr/ports/www/nginx-http3/quiche/deps/boringssl を指定しているんですね。
RTMP や Stream モジュールを利用する場合、ベタな openssl のソースのパスを指定する必用があるのですが、 quiche パッチを適用した場合、quiche 独自の SSL のコードを参照する必用があるので、 RTMP や Steram モジュールのコンパイルが通ったとしても、いざ動作させようとすると色々とシンボル名がなかったりするのですな。

 
と、いうことで、 Nginx に quiche パッチを適用した場合は、 HTTP/3 でのアクセス可状態なサーバで、SSI を利用しないウェブサーバとして利用するみとになります。

あ。Nginx + quiche パッチを適用したウェブサーバでも HTTP/2 や HTTP/1.1 、そして HTTP/1.0 (今では w3m くらいか?) でアクセスがあった場合 (それは、つまりは TCP でアクセスがあった場合かぁ?) には SSI は動作します。あくまで HTTP/3 でアクセスがあった場合のみ SSI の記述がある index.html がまともに表示されない状態になります。

SSI 使ったり RTMP・Strerm モジュールを利用したい場合は別にコンパイルしたサラの Nginx を用意する必用があります。 quiche パッチを適用しない Nginx では SSI や RTMP のサーバとして利用できるので、仮想マシンやコンテナで別立てするのがよろしいかと思われます。

 
ちなみに、Firefox は 72 から、 macOS や iPhone は Safari 14 から HTTP/3 がサポートされるようになりました(詳細については gugu ってください;-)。 macOS や iOS から HTTP/3 でアクセスできるようになると、ウェブサーバ担当者としてもいよいよ HTTP/3 の設定をしてサーバを起動してみたくなりますなぁ;-)。 ファイアーウォールの UDP Port:443 を開けるときが、今っ!! 来ましたっ!! ;-)。

9月 062020
 

いやぁ。今までハイレゾプレーヤーとして使っていた SONY Xperia Z5 Compact はバッテリー膨張で、裏ブタが剥がれてしまったので、どうするか悩んだのですが、結局 SONY Xperia 10 II XQ-AU52 を購入してしまいました。

Xperia は二台目です。 『だから私は Xperia。』あ。もうこのフレーズ、古いのか・・f(^^;;。

当初 Xperia 8 Lite にするか Xperia 10 II にするか悩んだのですが、CPU の違いと Android OS のバージョンの違いから、結局 Xperia 10 II にしました。

比較してみると

・Xperia 8 Lite
CPU: Snapdragon630
OS: Android9
価格: 26,800yen (税別・IIJmio での価格)

・Xperia 10 II
CPU: Snapdragon655
OS: Android10
価格: 36,000yen (税込み)

 
OS のバージョンの違いがけっこう大きいかな。長く使おうとすると Xperia 10 II になりそうです。あと、色々ベンチマークサイトなどを調べてみると CPU 速度に雲泥の差があるみたい。

 
今回は amazon で購入しました。型番は XQ-AU52 です。消費税・関税込みで 36,000yen でした。購入から手元に届くまでは大体 5 日程度だったでしょうか。

XQ-AU52 は SO-41A と比べると

・おサイフケータイなし
・ストレージは 128GB で SO-41A の倍の容量

この辺りが大きなな違いですかね。

amazon の購入時、サイトの説明には「開封し、動作確認したあとで発送します。」と書かれていたのですが、箱の表面を覆うナイロンシートは切られていないし、箱から出した本体も綺麗だったので、特に開封された形跡はありませんでした。つまり、本当に新品が届いた。と、いうことですね;-)。

それにしても『箱がベコベコでちゃちぃ。』と、ウェブ上のあちこちで書かれていますが、まさしくそんな感じf(^^;;。

 
では、Android 機種三台のスマートフォンを並べた写真を掲載してみましょう。

左から OPPO Reno A・SONY Xperia10 II・SONY Xperia Z5 Compact の順。
大きさ的に Xperia10 II は OPPO Reno A の横幅を約 1.5cm ほど細くし、 Xperia Z5 Compact の横幅が 7mm 、上に 3cm ほど大きくしたサイズですかね。細さは特筆すべき点だと思います。

 
それでは SONY Xperia 10 II XQ-AU52 の簡単なレビューを。

まずはじめにですが、今回購入した Xperia 10 II は SIM カードを入れることは想定していません。あくまでハイレゾプレーヤーとして購入しました。なので、 MVNO や Rakuten Mobile での電波の入りについては一切なしです。

OS は Android10 です。 Xperia 8 Lite の購入をやめたのはその点が大な要因となっている一つでもあります。

 
o. Android10 とからめた SONY 謹製アプリは?
Xperia Z5 Compact の頃の状態と比べて SONY 謹製アブリが少なくなっていますね。

SONY 謹製の アルバムアプリ が google の フォトアプリ に置き換わっています。これは結構痛い。 SONY 謹製のアルバムアプリ好きだったのに・・。
電卓アプリも google のに置き換わっています。メールアプリは Gmail に置き換わっています。
カレンダーアプリはそもそも google カレンダーだし。

google 謹製アプリは OPPO Reno A (ColorOS) と違い、無効化できるのが嬉しいですね。不要な google 謹製アプリはサクっと無効化し、代替のアプリをストアからインストールしました。基本的には OPPO Reno A と同じモノをインストールした。と、いう感じですね。

 
嬉しいのもありました。ファイルマネージャーが SONY 謹製になりました。今まではサードパーティー製の無償版 (File Commander) がインストールれさていて default で広告とか表示されていたので『ふざけるなっ!!』とか思っていた (当時の AndroidOS では謹製アプリでないと SD カードの操作が制限されていた) のですが、今回は広告なしのアプリになりました。

 
o. Xperia 10 II の機能が使えないっ!!
「縦に長いので画面分割して二つのアプリを同時表示しよう。」などと大々的にウリとしていますが、あたたたたた・・。 orz って感じ。

なんとっ!! ホームアブリを SONY 謹製以外のモノに変更すると使えなくなる。これではまるで意味ないしっ!!

僕は X Launcher Pro (有料版) というのを、最近の Android では利用しているのだけど Xperia 10 II では「お使いのホームアブリには対応していません。」と、表示され、画面分解できないっ!!

 
OPPO Reno A は下からの指三本スワイプでサクっと画面分割できているので、それと同じ雰囲気であろうと思っていたのだが・・。結構ショックでかい。
と、いうか『ColorOS って中々やるのね。』と OPPO の技術力の高さを再確認しました;-)。

もう一個、ホームアプリを変更すると使えなくなるモノがありました。一番下の三角・丸・四角のメニューを消して、下からスワイプで制御する機能があるんだけど、ホームアプリを変えてしまうと Xperia 10 II ではその設定ができない。これも ColorOS のほうが一歩先行ってます。
画面の横からニョキっと出てくる サイドセンスアプリ も ColorOS のほうが完成度は高いかな。

ただし、SONY 製、そして Xperia なので、 ColorOS とは違い、楽曲 DB で文字化けするとか、ショートカットが作成できない、はたまた設定のショートカット作成時に同じ項目が表示されてしまうなど、そーいったバグが無いのは安心感があります;-)。

 
と、いうことで、三つ並べてみました。

左から OPPO Reno A・Xperoa 10 II・iPhone8。

見た感じ、全て iOS 風です。あ。本物の iOS が一個まざっていますか;-)。
iOS 風にするとなると、やっぱり、一番下の三角・丸・四角のメニューはやっぱり消したいですねぇ。

 
そー言えば Xperia 10 II XQ-AU52 はおサイフケータイ非搭載ですが NFC は搭載しています。でもって、 google Pay アプリも default でインストールされています。おサイフケータイは使えないけど、バーコードなどでのお買い物などには対応していますよ。みたいな感じかな。 Reno A と google アカウントは一緒なので、データ連係はできています。

 
o.CPU速度は?
OPPO Reno A は Snapdragon 710 で、新しく出た OPPO Reno3 A は Snapdragon 665 になりました。いやはや。 Reno A を購入して良かったー。と、思います。
Xperia 8 Lite は Snapdragon 630 で、ちょっと前にでた Xperia Ace や AQUOS sense3 などと一緒です。ウェブ上の比較サイトで見ても Snapdragon 630 よりも 665 は良い感じです。

使用感ですが、速度の順番からみると iPhone8 > Reno A > Xperiia 10 II と、いう感じですが、イライラするほど遅くはないです。 Xperia Z5 Compact が遅すぎた。と、いう雰囲気でしょうか。

Xperia 10 II でポケモン GO をやってもそんなに遅いとは感じませんが、縦スクロール時にはカクカク感があるかな。まぁ、縦に長いスマートフォンなので、表示する情報が多くなると CPU 負荷 (VGA のチップか) が高くなるとこはあるのでしょうねぇ。

 
あと、熱くない。 Xperia Z5 Compact とか Z 世代の Xperia ってやたらと熱くなる。と、有名でしたし、確かに熱かったけど、今回購入した Xperia 10 II は熱くなるようなことも無くフツーに使えています。

 
と、いうことで、簡単ではありますがレビューを書いてみました。 OPPO Reno A を既に持っているので SIM カードを入れることは想定していません。 Rakuten Mobile はデータ無制限だしテザリングできるし、既に OPPO Reno A に入っているし。

まぁ、ハイレゾプレーヤー専用機として頑張ってもらいたいなぁ。と、思っています。ちなみにですが、 128GB の MicroSD カードの中のハイレゾ楽曲は全部で 425 曲ほど入っておりました。 音楽全体では約 9,000 曲ほど持ち歩いております:-)。

9月 052020
 

このブログの過去のエントリを確認してみると、そもそも Xperia Z5 Compact を購入したのは 2016 年 06 月のようです。と、いうことは 4 年ほど利用した。と、いうことになります。

Z5 Compact は結局 Android7.1 で OS のバージョンアップは停止してしまい、今となっては Snapdragon 810 もむちゃくちゃ遅く感じる CPU で『そろそろ引退かなぁ。』などと思っていたのであります。

まぁ、最近は専らハイレゾプレーヤーとして利用していた状態なのですけども。

 
そんな Xperia Z5 Comat ですが、いよいよ裏ブタがパカっと口を開けてしまいました。

こんな感じ。

これはもう、バッテリー膨張ですね。と、いうことはいよいよおしまいだ・・。

Xperia Z5 Compact はもともとうんと熱くなる機種なので、夏の暑さと本体の熱さでバッテリーの熱膨張が進んでしまい、今年の夏はガマンしきれずに裏ブタを押し上げたか? と、いう雰囲気が、僕はしているんですけども。

 
と、いうことで、そのまま裏ブタをベコっと引き剥がしてしまいました。雰囲気的にはノリでくっついている感満載だったのでベリベリベリ。と、いう雰囲気。

で、中を見るとこんな感じ。

バッテリの上にあるのは NFC のリボンですね。バッテリー本体を押すとバッテリー本体部分と上の黄色いビニールみたいなヤツの間に空気が入り込んでいるみたいな雰囲気。

裏ブタをギュッと押しても接着面がどこかしら浮いてしまう状態で、もう無理して使わないほうが良いかなぁ。

 
ちなみに、せっかく裏ブタが開いたので、この際バッテリーを交換したらどぉだぁ?! などと調べてみたら、なんとケースから本体を抜き出して、ひっくり返して取り外すという、それなりに手間がかかることが解りました。

バッテリーは 4,000yen 前後、作業工数 1 時間。そして Android7 で CPU はもう遅すぎる。このまま修理して使う意味あるのかな?と、思ったら、はい。しゅうりょうー。みたいな感じとなりました。

 
さてと。これでハイレゾプレーヤーがなくなってしまった。どうするかなぁ・・。

8月 232020
 

僕は普段から HHK の USB Lite2 を利用していました。しかし、昔購入したヤツで、かな刻印ありなヤツです。何回もこのブログには書いていますが、僕はカナ入力の人なのです。で、 HHK は『カナ刻印無し』とか、いうモデルばっかりになってしまい、本当に「もうおしまいだぁ・・。」などと思っていたら、PFU は本当に HHK Lite2 の生産を中止したようで、もう二度と多分 PFU の HHK は買うことはないだろう。と、いう事態に・・。

 
では、新しいキーボードをどうするか。実は、 HHK Lite2 の『カナ刻印なし』バージョンが出てからずっと、探していたのですが、「キーボードって、出せて 8,000yenくらいまでかなぁ。」とか思っていました。そして、ちっこくて 106 でカナ刻印。

色々調べたらエレコムの TK-FCM103XBK と、いうキーボード (TK-FCM103BK と、どこが違うのだろう?) がほどほどな値段 (1,000yen をちょっと超える価格っ!!) であったので、とりあえず購入してみました。

 
使ってみた感じは HHK Lite2 より打刻音が小さくて良い感じかな。ベコベコ感は一緒ですね。値段相応ですが 6,000yen の HHK Lite2 とほぼ似たような感じでしょうか。

あ。一点だけ。 USB HUB がないのがちょっと悲しいかな。マウスの USB ドングル (子機部分) をキーボードの USB HUB につけていたのですが、それができなくなった。その点がちょっと悲しい点か・・。

さて。僕がいままで利用していた HHK Lite2 は USB 切換機で FreeBSD (Windows10) と Mac mini で共有していました。 HHK Lite2 を macOS で利用するにはドライバをインストールする必要があり、僕は macOS パックを購入していたのでキートップも Mac 用に換装していたのであります。
しかし、今回購入したキーボードは Windows 用であり macOS 向けではない。 FreeBSD や Windows で利用するには特に問題はないのですが、 macOS で利用すると [無変換]と[変換]キーは macOS では利用できないので、日本語入力のオン・オプができない。その部分をなんとかする必要がありました。

 
ちなみに、僕は macOS での日本語入力には ATOK パスポートを利用しています。 [無変換]と[変換]キーが使えないので、一応 FreeBSD の kinput2 のように (古いっ!! 僕は fcitx を利用しております;-) Shift-Space でオン・オフできるようには設定しました。

が、しかし、探してみると[無変換]と[変換]キーを使うことができるようにするアプリがあるようですね。以下の URL が参考になります。

https://karabiner-elements.pqrs.org
https://github.com/tekezo/Karabiner-Elements

GitHub にソースコードがあり、バイナリは下の URL からダウンロードできます。

ダウンロードして、インストールすると /Applications/Karabiner-Elements.app/ と Karabiner-EventViewer.app/ がインストールされます。
Karabiner-Elements を一回起動します。そしてなにもせず終了します。そのあと、以下のファイルを用意します。

$ cat ~/.config/karabiner/karabiner.json
{
    "profiles": [
        {
            "name": "Default profile",
            "selected": true,
            "simple_modifications": {
                        "japanese_pc_nfer": "japanese_eisuu",
                        "japanese_pc_xfer": "japanese_kana"
            }
        }
    ]
}

 
emacs とか vi で新規に作成してください。そして、再度 Karabiner-Elements を起動すると、トップページに設定ファイルの内容が反映されると思います。

~/.config/ に設定ファイルを入れるなんてのは freedesktop.org チックで中々良い雰囲気ですよねぇ。あ。余談でした;-)。

が、その前に Karabiner-Elements を起動するとセキュリティうんぬんと言われます。「システム環境設定」アプリを起動し「セキュリティとプライバシー」を選択したあと[セキュリティ]タブの「入力監視」メニューからインストールしたモノ (karabiner-*) にチェックを付けてあげる必要があります。

これで[無変換]と[変換]キーが有効になるので、かな漢字システムのオン・オフが有効になり、フツーの macOS 用のキーボードになります。

あ。そーそー。実際に必要な Karabiner-Elements とは別に Karabiner-EventViewer.app というアプリもインストールされますが、んー。僕的には、こーいうのが欲しかった。 Xorg でいうところの xev と同じ機能も持ったアプリになります。xev と同じくキー名とか番号が表示されるので xev 同様、そこはかとなく重宝します;-)。

 
あともう一点。
当然ながら Ctrl キーと CapsLock キーをひっくり返す必要があります。そして、このキーボード特有なのかもしれないですが、 macOS で利用すると Command キーと Option キーが逆な雰囲気です。それぞれをひっくり返す必要があります。

しかし、この辺りの設定は macOS 側でできます。 キーボードの修飾キーをひっくり返すのは OS の標準機能でサポートしているようです。

「システム環境設定」アプリを起動し「キーボード」を選択すると[キーボード]タブの右下に[修飾キー…]があるのでそこをクリックしてキーを入れ替えます。

僕の場合はこんな感じで入れ替えました。

これで Windows 専用キーボードもフツーに macOS で利用可能な状態になりました。

 
結構長い間 PFU の HHK (Lite2 だけど) を使い続けていた (約 20 年くらいかな? PS/2 から USB に切り替えて、今の Lite2 は二個目かな。自宅と職場でそれぞれ使っていたので計 6 台くらい買ったかな。) んだけど、『カナ刻印なし』とかいう (僕的に思うには) 非常にすっとぼけた製品を出してきたので『だめだこりゃ。』感が非常に強かったのですが、今回、ほどほどの価格で、まぁ、そこそこの機能のキーボードが手に入ったのでヨシとしています。
実は、一個購入したあと、三日後にもう一個注文してしまいました。1,000yen ちょっとの価格だし、何個手元にあっても良いかなー;-)。

macOS でも Windows 向けキーボードが利用できることが確認できたし、今回購入したキーボードがエレコムから発売され続ける限り、これを買い続けようかなぁ。などと思っております。

まぁ、僕的にはこんなにお安くなくとも良いのでは?と、ちょっと思っているんですけどもねf(^^;;。

8月 022020
 

今回も ThinkPad X13 で FreeBSD を動かすネタです。前回のエントリは「ThinkPad X13 AMD で利用する FreeBSD。」というネタでしたが、結局のところ FreeBSD/amd64 12.1-RELEASE ではだいじなものが動作しない。と、いう結果に終わりました。

その後、それなりに使い続けているのですが、中々厳しい状況においてもそれなりに許せる点もあるので、その辺りについて先に書いてみます。

 
o. 音は出るね。
/dev/sndstat を覗いてみると音は出るみたいです。

Installed devices:
pcm0: <ATI R6xx (HDMI)> (play)
pcm1: <ATI R6xx (HDMI)> (play)
pcm2: <ATI R6xx (HDMI)> (play)
pcm3: <Realtek (0x0257) (Analog)> (play/rec) default
pcm4: <Realtek (0x0257) (Right Analog Headphones)> (play)
No devices installed from userspace.

 
本体で音を出すのは Realtek 側のデバイスを利用する必要があるのですが、前のエントリでは「イヤホンジャックに切り替えられない」と、書いていたのですが、実はそんなことはなく、ちゃんと切り替えできました。

ただ、利用できない状態の場合もあります。例えば動画を mpv で見るとき、止まってしまいます。色々オプションを変えて確認したところ mpv -no-audio test.mp4 とかで再生できることが解りました。
つまり、mpv で動画の再生ができないのは Realtek のドライバがちょっと怪しいからなのね。と、いうことが解りました。

で、回避策ですが、Windows10 をリブートして FreeBSD を起動するとサウンドデバイスが怪しい。しっかりとシャットダウン状態から起動すると音が出るような感じです。通電している状態からの初期化がうまくいってないのかな?と、いう雰囲気です。

まぁ、音が出るのでヨシとしておきますf(^^;;。

 
o. suspend/redume もしないし画面の明るさ変えられないけど・・。
いやぁ・・。半分あきらめの境地で xf86-video-scfb を利用していますが、比較的新しい AMD APU を利用している人は以下の URL を見てみると良いかもです。

amd vega and radeon series vga card driver for FreeBSD 12.1 tutorial for beginner

Picasso は大丈夫そうですね。 Renoir はまだちょっと無理っぽい・・。

そして、drm-v5.0-fbsd12.1.zip を使い、 linuxkpi のソースにパッチを当てると suspend/resume もするみたいです。

いやぁ・・。早く Renoir に対応してくれないかなぁ・・。

 
画面の明るさを調整できないのは、AC アダプタ運用時には特に気にならないです。それにしても液晶ディスプレーが大きくて綺麗なので scfb でも結構それなりに綺麗に映ります。明るい画面だとなおさら綺麗に見えるっ!!

負け惜しみです・・。 orz

ThinkPad E145 の場合は 起動中の BIOS の画面とか、FreeBSD のブートセレクタの画面が出ているときに ThinkPad の Fn ボタンで画面の明るさが調整できた (FreeBSD が起動して acpi.ko に制御が渡るといきなりボタンが無効化される。 acpi.ko が悪さしていることは、文字通り、目に見えている) のですが、今はそれができない。最大の明るさで光っています。 xrandr でも制御できない。

 
と、いうことで、本題に行きましょうか。

ThinkPad X13 AMD に FreeBSD/amd64 12.1-RELEASE をインストールしていて、実はタッチパットの動作が怪しかったのであります。

どの辺りが怪しかったかというと、

  • タッチしてツーツーと指を動かしてもカーソルの動きがやたらと遅い
  • 二本指でスクロールしてくれない
  • KDE5 の「KDE システム設定」の「ハードウェア」→「入力デバイス」→「マウス」の [タッチパッド] のメニューで認識していない

みたいな感じです。一応、タップしてクリック風の動作はするし、タッチしてズズズとずらすとマウスカーソルが動いてくれるので『ま。こんなモノなのかな。新製品は。』などと、思っておりましたが、二本指でスクロールができないのは不便なことこの上ないので、やはり調べてみることにしました。

 
1. iichid って?
ports に sysutils/iichid というのがあります。これをインストールします。

GitHub に設定方法が書いてあるので、参考にして、色々設定します。

https://github.com/wulf7/iichid

/boot/loader.conf で ig4 iicbus と iichid を kldload するように設定しろ。って、書いてあります。その通りします。
xorg.conf のマウスの部分の設定も上記 URL に書かれているようにします。しかし、二本指スクロールの設定はなくてええんかい? と、なるのでありますが・・。

実は /boot/loader.conf にはもう一個設定が必要です。

 
2. /boot/loader.conf の設定
フツー、ThinkPad を利用している人は赤ポッチのマウスとタッチパッドの両方を利用したいと考えます。その設定を /boot/loader.conf に書きます。上記の kldload 分と合わせて書いたものはこんな感じです。

hw.psm.synaptics_support="1"
hw.psm.trackpoint_support="1"

ig4_load="YES"
iic_load="YES"
iichid_load="YES"

 
synaptics_support はタッチパットサポートの設定で trackpoint_supportは赤ポッチサポートですね。
そして xorg.conf のマウス部分の設定に入ります。

Section "InputClass"
    Identifier          "libinput touchpad catchall"
    MatchIsTouchpad     "on"
    MatchDevicePath     "/dev/input/event*"
    Driver              "libinput"
    Option              "NaturalScrolling" "on"
    Option              "ScrollMethod"     "twofinger"
    Option              "Tapping" "on"
    Option              "DisableWhileTyping" "on"
    Option              "AccelSpeed" "0.42"
EndSection

Section "InputClass"
    Identifier  "Trackpoint Wheel Emulation"
    Driver              "evdev"
    MatchProduct        "TPPS/2 IBM TrackPoint"
    MatchDevicePath     "/dev/input/event*"
    Option              "EmulateWheel"          "true"
    Option              "EmulateWheelButton"    "2"
    Option              "Emulate3Buttons"       "false"
    Option              "XAxisMapping"          "6 7"
    Option              "YAxisMapping"          "4 5"
EndSection

 
ThinkPad E145 の場合はこれで動いていました。以前のエントリの「FreeBSD に KDE5 が降ってきた。」で libinput を使うようにしました。その流れのまま ThinkPad X13 AMD の設定をしていたのですが、上記のような現象。 ScrollMethod twofinger が効いてない。

 
何回か、試してみましたが、ダメでした。で、色々と調べたところ、今の時代 hw.psm.synaptics_support ではなく hw.psm.elantech_support というのを使うと良いみたいなのであります。と、いうことで全て設定を見直してみました。

 
3. 結局 hw.psm.elantech_support=1 だね
まずは正しいと思われる設定を色々としていくことにします。

 
o./boot/loader.conf

#hw.psm.synaptics_support="1"
hw.psm.elantech_support="1"
hw.psm.trackpoint_support="1"

ig4_load="YES"
iic_load="YES"
iichid_load="YES"

evdev_load="YES"
uinput_load="YES"
cuse_load="YES"

 
ThinkPad X13 AMD の場合は hw.psm.synaptics_support ではなく hw.psm.elantech_support を 1 にします。
一応 iichid 関連を kldload するようにしました。
その下 evdev は libinput 系の Xorg で利用するときに必要なカーネルモジュールです。これらも kldload するようにしました。

とは言いつつ、僕の場合、デスクトップに KDE5 を利用しているので Wayland べったりです。 ports 的にインストールしたのは以下になるでしょうかね。

 
xf86-input-evdev-2.10.6_5
xf86-input-keyboard-1.9.0_4
xf86-input-libinput-0.30.0
xf86-input-mouse-1.9.3_3
xf86-input-synaptics-1.9.1_6 (多分、これはもう要らない)

 

o.Xorg.conf のマウス設定

Section "InputClass"
    Identifier          "libinput touchpad catchall"
    Driver              "libinput"
    MatchDevicePath     "/dev/input/event3"
    MatchIsTouchpad     "on"

    Option "AccelSpeed"  "0.1"
    Option "ClickMethod" "clickfinger"
    Option "DisableWhileTyping"  "on"
    Option "HorizontalScrolling" "on"
    Option "LeftHanded"          "off"
    Option "NaturalScrolling"    "on"
    Option "ScrollMethod"        "twofinger"
    Option "Tapping"             "on"
    Option "TappingDrag"         "on"
    Option "TappingDragLock"     "on"
EndSection

Section "InputClass"
    Identifier          "Trackpoint Wheel Emulation"
    Driver              "evdev"
#   MatchProduct        "TPPS/2 IBM TrackPoint"
    MatchDevicePath     "/dev/input/event4"
    Option              "EmulateWheel"          "true"
    Option              "EmulateWheelButton"    "2"
    Option              "Emulate3Buttons"       "false"
    Option              "XAxisMapping"          "6 7"
    Option              "YAxisMapping"          "4 5"
EndSection

 
上の部分がタッチパットで、下の設定が赤ポッチ(トラックポイント)です。 xinput list とか、コマンド打つとか /var/log/Xorg.0.log をひたすら眺めて /dev/input/event の何番目が割り当てられるのか確認する必要があります。

僕の場合 hw.psm.synaptics_support のときは event0 だったのに hw.psm.elantech_support にしたら event3 になりました。そしてトラックポイントは event4 になりました。

 
『hw.psm.synaptics_support=1 を設定しましょう。』と書かれているサイトはよく見るのですが『hw.psm.elantech_support=1 を設定しましょう。』ってのは、まだあまり見かけないので、今回のエントリーを書いてみました。
タッチパットが思ったとおりの動作をしない場合は hw.psm.synaptics_support ではなく hw.psm.elantech_support を指定してトライしてみてはいかがでしょうか。

 
ちなみにですが hw.psm.elantech_support を利用したら KDE システム設定のメニューにも正しく表示されるようになりました。

 
デバイス的には ETPS/2 Elantech Touchpad として認識されました。 ET な PS/2 なマウスって感じ? (なにそれ? f(^^;;)

xorg.conf で設定している値がそのまま KDE の設定画面から調整できるのが良いですよねぇ。これも Wayland の恩恵かなぁ;-)。

7月 152020
 

さてと。前回のエントリは ThinkPad X13 の AMD 版が納品されて、簡単なファースト・インプレッションを行いました。
僕はそもそも NotePC で Windows10 を利用することはあまりないので、ベンチマークとか全然できないのであります。なので、詳細な検証などはまるで皆無。参考にならない記事ですなf(^^;;。

と、いうことで、今回は出たばかりの最新鋭の NotePC に FreeBSD をインストールしてみます。色々と問題点があるのだろうなぁ。とは思うのでありますが、れっつとらい。

 
1. FreeBSD のインストール準備
今回チョイスした FreeBSD のバージョンは FreeBSD/amd64 12.1-RELEASE と、いうリリースされている標準的なバージョンです。このバージョンが、最新鋭の NotePC にインストールしてどこまで動作するのか確認してみたいと思います。

インストールの作業手順は以下のとおりです。

0).Windows10 の回復 USB の作成
1).Windows10 のパーティションの縮小
2).FreeBSD 用 UEF パーティションの確保
3).FreeBSD のインストール
4).bcdedit でブートメニューの登録

このうちのほとんどの作業は以前「ThinkPad E145 を UEFI ブートに変えてみた。」といえエントリに書いているのでサクっと省略します。実際に僕もこの手順で問題なくインストールできましたので、そちらを参考にして頂ければと思います。

ただ、今回は最新鋭の NotePC で、今まで利用していた ThinkPad e145 と比べて最新技術が導入されています。

気を付けたのは以下の点。

  • BitLocker が default で導入されている
  • UEFI (BIOS) の設定画面で「レガシー BIOS」(CSM のことですね) がどうも見当たらない

この二つをなんとか回避する必要があります。

 
2. BitLocker の解除
「コントロールパネル」から「BitLocker ドライブ暗号化」メニューを覗いても無効にはできませんでした。ただし、この画面から BitLocker のキーを取得しておきましょう。
BitLocker を解除するのは「設定」アプリの [更新とセキュリティ] の中にあります。ここからまず、 BitLocker を無効にします。

最初から入っている OS 以外をインストールするとき EFI セットアップメニュー (BIOS 画面) で「セキュアブート」を無効にする必要があるのですが、 BitLocker を有効にしたままセキュアブートをオフにすると青い画面が現れて何やらキーを入力するように要求されてしまい『むむむ。』などと思ってしまうのであります。

と、いうことで、新しい OS をインストールするためには、

・BitLocker を無効にする
・セキュアブートをオフにする

以上の二つが必要です。

 
3.「レガシー BIOS」の設定画面が見当たらない
もしかしたら EFI セットアップメニュー内にあるのかもしれません。が、しかし、僕は見つけられませんでした。と、いうか、もう FreeBSDの インストール時には「レガシー BIOS」の設定の有無は不要です。

ThinkPad e145 を UEFI で利用する設定を投入したときに FreeBSD のインストール用 USB メモリを Rufus で作成した。と、書いています。 Rufus で FreeBSD のブート USB イメージを作成するときは MBR で起動する USB ブートイメージしか作れない。と、書いているのですが、実は FreeBSD の 12.1-RELEASE のインストールイメージは UEFI+GPT に対応しているんですね。

Rufus を利用して UEFI 対応の FreeBSD の USB ブートイメージを作成する場合 ALT+E を押すことにより BIOS+MBR にするか UEFI+GPT にするか選択できます。

なので、「レガシー BIOS」 をオンにせずとも UEFI モードのままで FreeBSD をインストールすることができるのであります。

 
4.FreeBSDのインストール
EFI セットアップメニューで変更するのは セキュアブート “オフ” のみで FreeBSD のインストールが可能になりました。

と、いうことで、あとは FreeBSD をインストールするのみです。途中パーティションの設定の所では、 [Auto] を設定すると、SSD の全領域を対象としてしまうので、ここは [Manual] で、必要な領域を確保するようにします。

インストールが完了したあとは Windows10 が起動するので bcdedit で Firmware Windows Boot Manager に FreeBSD がブートするように登録してあげてインストール作業は終了です。

 
5.いよいよ FreeBSD の起動。しかし NIC は?
まず、必要なのにデバイス的に動かないもの。あ、今回は一発目のインストールなので 12.1-RELEASE になります。あまりにも動かないようであれば CURRENT に移行するか。などと思っていますが。

  • WiFi6 AX200
  • Ryzen7 Radeon Vega10

この二つは結構痛い・・。orz
順番に話して行きます。

そもそも pciconf -lv すると none のデバイスが 8 個もあります。orz

pciconf -lvの結果

vmm.ko を kldload するとか、仮想 OS 用のブリッジ・RealTek のデバイス・AMD のマルチメディア系デバイスなどが認識していません。

 
Intel の WiFi6 対応の AX200 は 調べてみたところ OpenBSD のほうでは if_ixw と、いうドライバが書かれているみたいですが、 FreeBSD はまだ未対応のようです。 if_iwm.ko でも動作しません。

ThinkPad X13 の内臓 re0 を利用するためのアダプタを購入してないので USB WiFi や USB NIC を利用しようと思いましたが・・。それにしても最近の FeeeBSD の USB NIC はボロボロですな・・。RealTek の WiFi NIC ドライバ if_urtw.ko は 802.11a 対応したチップをマージしたら速度が全く出ないし、 if_axge.ko は ue0 の 1Gbps で接続する JR45 の NIC なのに、こいつは ping の損失率は 60% 前後。もう、悲惨というほかない・・。

ショーがないので WiFi の場合は if_run.ko を利用し RJ45 NIC の場合は if_axe.ko を利用する。と、いう状態・・。orz

 
6.Xorg 動く?
Ryzen7 Radeon Vega10 はディスプレイ用のチップですが ports から graphics/drm-fbsd12.0-kmod/ をインストールして

kld_list="/boot/modules/amdgpu.ko "/boot/modules/radeonkms.ko"

 

を書いても認識されませんでした。

/dev/dri/Card0 が生成されないので OS 的にも認識されていません。

まぁ、この際 amdgpu.ko をきっぱりと諦めて vesa ドライバで Xorg が起動してみようと試みるもダメ・・。あらまぁ。

[ 71220.842] (II) VESA(0): initializing int10
[ 71220.843] (EE) VESA(0): V_BIOS address 0x0 out of range
[ 71220.843] (II) UnloadModule: "vesa"
[ 71220.843] (II) UnloadSubModule: "int10"
[ 71220.843] (II) Unloading int10
[ 71220.843] (II) UnloadSubModule: "vbe"
[ 71220.843] (II) Unloading vbe
[ 71220.843] (EE) Screen(s) found, but none have a usable configuration.
[ 71220.843] (EE) 
Fatal server error:
[ 71220.843] (EE) no screens found(EE) 
[ 71220.843] (EE) 
Please consult the The X.Org Foundation support 
         at http://wiki.x.org
 for help. 
[ 71220.843] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
[ 71220.843] (EE) 
[ 71220.844] (EE) Server terminated with error (1). Closing log file.

 
vesa ドライバを利用した場合はこんな感じのログが出力されます。

それなら最後の手段だ。と、いうことで scfb で試してみたところ、一応 Xorg の画面は現れました。が、 xrandr で対応する画面サイズを確認してみると・・。

# xrandr 
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 640 x 480, current 640 x 480, maximum 640 x 480
default connected 640x480+0+0 0mm x 0mm
   640x480        0.00* 

 
orz。

しかし、scfs ドライバというのは UEFI と密接に関連いているようですね。 xorg.conf でディスプレイサイズを変更するのではなく UEFI 用のコマンドが用意されていて、 OS 起動時の画面サイズを調整してから、そのサイズを scfb ドライバが読み取って画面サイズが決定されるようです。

FreeBSD の起動時に OS ブートのメニューが表示されますが、そこで 3 を 押して OK プロンプトを出します。

表示された OK プロンプトで gop コマンドを打ちます。 GOP とは Graphics Output Protocol のことらしいです。オプションは list (選択枝の表示) get (現在の設定情報の取得) set (新しい設定を指定) の三つ。

OK プロンプトから gop list と打つとディスプレイが対応しているサイズの一覧が表示されます。そこて gop set 0 などと打ち、使いたいサイズの番号を打ちます。

すると、コンソールが中央付近に小さくなって表示されます。そこの OK プロンプトで boot と打つと指定した画面の大きさで FreeBSD がブートします。くれぐれも reboot とは打たないように;-)。
OS の起動後にすかさず startx と叩くと、さっきまで 640×480 でしか表示してくれなかった scfb ドライバが大画面で表示できるようになります。

ちなみに ThinkPad X13 AMD は色々なサイズがあったのですが、実質的に 640×480 か 1920×1080 の二つのサイズしか表示できませんでした。

なお、 /boot/loader.rc に gop set で指定したモードの番号を記載することにより毎回 OK プロンプトで設定する必要がなくなるらしいのですが、それはちょっとバグがあるみたいで正しく動作しないようです。
では、どうするか? と、いうと /boot/loader.conf に exec=”gop set 0″ と、コマンドイメージそのままを書くと良いです。

これで Xorg が無事に起動したので、ずいぶんと利便性がアップしました;-)。いやぁ。良かった。
あと、 NotePC のスペックが非常に高いので scfb ドライバでもその遅さがあまり気になりません。これは非常にラッキーです;-)。

 
7.Suspend/Resume するの?
以前、今回の ThinkPad X13 AMD を購入する前に FreeBSD の偉い人が既に ThinkPad X1 を持っていたのでその人に「Suspend/Resume します?」って、聞いたら「興味ない。」と、つれない返事。あらま。

では、ThinkPad X13 AMD が届いてから確認すれば良いやぁ。などと思ったのですが、今回はその検証を。

 
まず、何はなくとも zzz と打ってみると、一応は寝てくれました。しかし、電源を投入すると、 OS が起動して来て fsck が走ります。あらら・・。

試しに以下のコマンドを打ってみます。

# sysctl hw.acpi.supported_sleep_state
hw.acpi.supported_sleep_state: S4 S5

 
うひょー。 S3 ステートがないじゃーーん。 orz
なるほど。これが原因で「興味ない。」と、コメントが返ってきたんだな。と、一人で納得。

本当に S3 ステートが無いのか? とウェブで探し回ったことろ、以下の URL にぶち当たりました。

Lenovo ThinkPad X1 Carbon (Gen 6)

最近の ThinkPad には BIOS レベルで S3 ステートがなく、かわりに s0i3 スリープというのがあるらしい。では s0i3 スリープとはなんぞや? と、思い調べてみると Windows10 もしくは Microsoft 『モダンスタンバイ』というモノらしく OS べったりなスリープモードらしいです。

これを FreeBSD 側、上記 URL では『Linux 側』で利用するには ACPI の DSDT を書き換える必要がります。まぁ、過去に何回か書き換えたことがあるのでどーにかなるだろう。などと思いつつも EFI セットアップメニューを眺めていたらなんとっ!!

ThinkPad X13 AMD はスリープステートを EFI セットアップメニューから切り替えられるようになっておりました。

[Windows 10] にすると「モダンスタンバイ」 になって [Linux] にすると今までどおり S3 ステートになります。 [Linux] に変更したあとに上記 hw.acpi.supported_sleep_state を確認すると S3 S4 S5 と、 S3 が生えてまいりました;-)。

 
と、いうことで準備が整ったので再度 zzz と打ちます。 Suspend は割と素直に寝てくれます。フタを閉じて再度開けると、画面はブラックアウトです。しかし、 USB WiFi がピカピカ光っているのでカーネル自体は起き上がったようです。

しばらく待って ping の疎通確認したら目覚めていました。 ssh したらログインできました。無事に Suspend/Resume 自体は動作しているようですが、画面は真っ暗なまま。まぁ、まだ Xorg 動き始めたばかりなのでなんとも言えないですが、 コンソール周りの vt や Xorg 次第で画面が復活するかな?などと安直に思っています。

ちなみに、相変わらず acpi_video.ko はまともに動作せず sysctl の hw.acpi.reset_video mib を 1 にするとカーネルが凍りつくのは ThinkPad e145 と一緒ですね。

 
8.その他
画面の明るさ変更についてですが、上にも書いた通り acpi_video.ko がまともに動かないので sysctl の hw.acpi.video.lcd0.brightness mib などが使い物になりません。

これまた、画面の明るさについては Xorg が動いたら本格的にいじっていきたいです。

 
あと、まださわりだけですが、イヤホンジャックから音が出ません。 /dev/sendstat 見ると色々デバイスはあるみたいですが sysctl hw.snd.default_unit で切り替えてもヘッドホン端子にさしたイヤホンで音が出ていません。

pciconf -lv で AMD マルチメディアチップが none8 になっていたのでその辺りが影響しているのかな?

 
9.で、結局?
しかし、普段から NotePC で FreeBSD を利用しているので Windows10 では PC のスペックに対してその速さをあまり体験できなかったのですが FreeBSD をブートするとその性能が体感できますね。起動がむちゃくちゃ速い。 KDE5 も sddm からログインしたらサクっとデスクトップが表示されるし、 Firefox の起動もむちゃくちゃ速い。『いやぁー。速い NotePC は中々良いねぇ。』と、なるのであります;-)。

そして、ですが FreeBSD/amd 12.1-RELEASE では結局、以下が動きませんでした。

  • WiFi の AX200 が動作しない
  • Radeon Vega10 が amdgpu.ko で認識しない
  • S3 ステートは利用可能だが Suspend して Resume 後は画面がブラックアウト
  • 画面の明るさは変更できない
  • 音声出力がイヤホンジャックに切り替えられない

こんな感じでしょうか。Radeon Vega10 が graphics/drm-devel-kmod/ な ports で動作するのか確認したいところではありますが、そーすると OS 自体を CURRENT に上げる必要があります。

上記の状態を鑑みると CURRENT を試してみる価値ば十分にあるのかなぁ? などと、思っている次第ではあります・・。

が、このネタ、もう一回続くかも。

7月 122020
 

いやぁ。久しぶりに NotePC を新調しました。以前購入し、今でも現役なのは ThinkPad Edge e145 ですが、それ以来です。で、ThinkPad e145 はいつ購入したの? と、いうと なんとっ!! 2013/11 なのですねぇ。
ThunkPad e145 は、最近はディスプレイのヒンジを固定しているプラスチックが砕け散って液晶ディスプレイの開け閉じに支障が出ていたのでありました。

長く使うとプラスチックというのは壊れてきますねぇ。まぁ、長く使いすぎた。と、いう話もあるかと思いますが;-)。

 
と、いうことで、今回購入した ThinkPad を含めて、僕の使った歴代の ThinkPad を並べてみました。

ThinkPad 535E -> (途中 DELL とか購入) -> ThinkPad X100e -> ThinkPad e145 -> ThinkPad X13

ThinkPad X100e からずっと AMD の CPU を利用したモノを購入しており、今回の X13 も当然 AMD な CPU 版をチョイスです。実は ThinkPad X395 を買おうかと悩んでいたところに『 ThinkPad X13 は新しい Ryzen で登場予定っ!!』とのことだったので待って待って待って、ようやっと購入しました。

それにしても、購入した歴代の ThinkPad で 10 万 yen を超えたのは今回が初めてです・・f(^^;;。 AMD CPU は安さが魅力ですからね。そして、ThinkPad の看板でもある X シリーズを購入したのも今回が初めて。なるほど 10 万 yen 突破するわけだぁー。

 
ウェブから申し込んだのが 発売日の 2020/06/05 。その後、カードで引き落としできず結局銀行振込にして 5 日ほど無駄な日々を過ごし、納品されたのが 2020/07/07 でした。大体約一ヶ月ですね。
ThinkPad e145 と同じくらいでしょうか。

あ。カードで引き落としができなかった件ですが、僕は macOS の Safari で Lenovo のポームページを見て購入しました。最後のカード番号を入力するところで画面が動作的に壊れてしまいカード番号を入れたんだけど、うまく Lenovo 側に伝わっておらず「このカードは利用できません。」となっているそうでした。

macOS の Safari と、あと AD Block が悪さしているかもしれません。 macOS でカードで購入しようとしている方は Safari ではない別のブラウザを利用したほうが良いかもです。
僕の場合は Microsoft Edge を利用し、 AD Block をオフにしました。が、それでもダメで、諦めて、サポートの人にメールで振込先口座番号を聞いて、銀行振り込みにしました。

 
それでは使用感。ファースト・インプレッションをば。

まず、箱から取り出しての感想。『でかいっ!!』 フツーの ThinkPad って、こんなにでかいのか?と、愕然。まぁ、 X100e も e145 もこぢんまりとした機種でありましたから、それと比較すると、ずいぶんと大きく感じます。

あと、排気熱がすごいっ!! 筐体の右側にダクトがあるのですが、この辺りって外付けマウスを利用する場所なんでよ。気がつくと、マウスを握っている親指に熱風が降り注いている・・。いやぁ。気をつけないと・・。

 
・default は Windows10 バージョン 1909
Windows10 バージョン 1909 をインストール直後から初期設定するのは初めてだったのですが、インストール時にコルタナが登場して音声で設定することができます。「次へ」とか口に出して言うとマウス操作が必要なかったりとか。

あと Windows10 バージョン 1909 で驚いたのはローカルユーザで利用できません。 Microsoft アカウントが必要です。
新規に作るか、既存アカウントでログインすることになります。ただ、回避策があるようで、初期の段階でネットワークに接続しないとローカルアカウントを作成することができるようです。

僕の場合は、一旦 Microsoft アカウントでログインしたあと、ダミーのローカルユーザをなんとか作成して、ローカルユーザでログインし直して、Windows10 上の Microsoft アカウントを削除して、ローカルユーザを Microsoft カウントに結びつけました。

ローカルユーザを作成するときのキャプチャを掲載しておきます。

「設定」アプリ -> [アカウント] -> [家族とその他のユーザー] -> [その他のユーザーをこのPCに追加]

ここで、ウィンドが開きます。そして

[このユーザーのサインイン情報がありません] -> [Microsoftアカウントを持たないユーザを追加する]

これでローカルユーザなアカウントが作成できます。

 
・Windows10 な NotePC で使う 8 コア 16 スレッドって、あまり意味を感じられないのですが・・f(^^;;。あ。今回購入した ThinkPad X13 AMD のスペックは以下の通りです。

  • CPU: Ryzen 7 PRO 4750U 8 コア/ 16 スレッド
  • メモリ: 16GB DDR4 3200MHz
  • SSD: 1TB M.2 2280 PCIe-NVMe
  • NIC: Wi-Fi 6 AX200 (RJ45 アダプタ購入せず)
  • ディスプレイ: 1920×1080 IPS・マルチタッチ非対応
  • その他: 指紋認証・WLAN・キーボードバックライト無し

 
以前購入し、デスクトップとして利用している Mac mini に続き 8 コア/ 16スレッドな CPU です。AMD では初です;-)。
SSD は奮発しました。512MB から 1TB へは増量キャンペーンで +9,900yen だったので飛びつきました。どうせ FreeBSD もインストールするだろうしみたいな。

その代わり、要らないのを思う存分削ぎ落とした。と、いう感じでしょうか。 Windows10 を利用していると指紋認証あると便利だろうけと、 FreeBSD で利用した場合は必要ないし、キーボードのバックライトで ACPI 周りを悩みたくないし。みたいな。

Windows10 ってあまり使い込んだとこないのですが、8 コア/ 16スレッドな PC って、恩恵受けられるのかぁ?

Windows10 側は普段必要なモノをインストールして、WLS と ubuntu をインストールして MobaXterm をインストールした段階で、一応 UNIX 風環境が整ってしまうので、それで『はい。シューリョー。』となってしまうんですよね。

 
そーそー。Windows10 って、Microcoft アカウントを利用していると、他の PC の情報を新しい PC に引き継いでくれるんですね。例えば Ctrl2Cap を使って Ctrl と CapLock を入れ替えていると、新しい PC でもその情報が反映されます。あと、同じように XMouseSetting ですね。こちらは X-window みたいにマウスオーバーによる Auto Rize の機能を設定していると、その設定も引き継いでくれました。手間を省略できたのが嬉しいし、素晴らしいですねぇ。

 
PC の速さには問題ない状況です。しばらく使い込んで、その後 FreeBSD をインストールする予定ですが、それは次のネタとして取っておきます;-)。

実は上の写真。 ThinkPadX 13 AMD で、もう FreeBSD/amd64 12.1-RELEASE が動いていたりします;-)。

詳細については次回を待て;-)。

2月 162020
 

楽天モバイルが「無料サポータープログラム」の参加者募集したとき、すぐに応募したのだけど見事に落選。今回二次募集があり、一次募集で漏れた人が優先的に二次募集に参加できる。と、いうのでメールが届き、早速アクセスしてクーポンコードを入力したら、SIM カード発送準備ができて、 02/02 の午前中に届いた。うひひ。

僕は以前に OPPO Reno A を購入していたので、今回の適合機種であろうということで、 SIM カードのみを申し込んだ状態です。

届いたモノはこんな感じ。

でもって、早速 OPPO Reno A に Rakuten Mobile の SIM カードを入れてみると、特にバージョンアップや APN を設定することもなく、サクっと認識し、LTE での通信が可能な状態となりました。
僕の OPPO Reno A は楽天モバイルで購入したものではなく、フツーに購入した 64GB 版で、楽天モバイル専用の 128GB 版ではないのですが、同じ機種だからでしょうかね。サクっと苦労せずに動作しました。楽ちんでした;-)。

LTE の動作確認と、電話の動作確認を実施しましたが、特に問題はありませんでした。

 
と、いうことで楽天推奨のアプリを二つインストールしました。

o. 楽天 Link アプリ
こっちは、電話や SMS などがひとまとめになったアプリで、一個のアプリでコミュニケーションが取れるようになっています。まぁ、まとまっていると楽かな。メニューアイコンを何個も並べる必要はないのでね。

o. 楽天モバイルアプリ
こっちは、何ギガ使ったかとか、スピード計測・契約情報や楽天への連絡用などがひとまとめになったもので、検証結果や、回線の状況などを楽天モバイルに伝えることができます。これが、楽天モバイルへの品質改善のレポートになるんだろうと思うんですが。

ちなみに、楽天モバイルの Band3 をつかんでいるときにスピード計測した結果。一番速度が出ているのをキャプチャしてみました;-)。

 
実際に使ってみると、僕の住んでいる東京都の埼玉とくっつていている 23 区の一つ(それはつまりは足立区ということですね)では特に問題もなく利用できます。

会社のある品川区でも特に問題もなく利用できます。ただ、僕の職場は 12 階にあるので、多少影響を受けるのか、スピード計測すると自宅の約半分の速度しか出ないような感じです。

 
もう少し細かく書くと、楽天モバイルが持っている LTE は Band3 で、楽天モバイルのアンテナがないところでは au の回線にローミングされるとのことですが、使用している au の LTE は Band18 と 1 でした。
と、いうことは楽天モバイルで利用するスマートフォンは Band 1・3・18 が利用できるモノであれば事足りるような気がします。

今回 LTE バンドの確認のために利用したアプリは Network Cell Info Lite と、いうヤツです。

ちなみに自宅では Band3 で通信します。地下鉄は Band18 もしくは Band1 でローミング状態です。例えば日比谷線が三ノ輪駅の手前で地下に入りますが、その瞬間を見ていると Band3 から Band18 に切り替わります。つまりローミングが開始された瞬間ですね。

楽天モバイルアプリでスピード計測で確認すると、Band3 を掴んでいる北千住駅は 50Mbps 程度、三ノ輪駅の手前で au の Band18 に切り替わった直後は 140Mbps 出ました。おー。さすがは au の回線;-)。 あ。朝の 07:15 前後の時間帯です。

 
会社のほうはもっと面白くて、地下鉄南北線内では Band18 、地上に出ると Band3 、そして、ビルの中に入りエレベータに乗り、トビラが閉まった瞬間に Band18 になります。
職場は 12F にあり Band3 は届かないようで Band18 で過ごすことになります。

で、ちょうど Band3 から Band18 に切り替わる瞬間をキャプチャできました。エレベーターの扉が閉まる瞬間なので、再現性十分です。なので、何回でもトライできます;-)。

 
無料サービス開始時はけっこうボロクソ言われていたような気がしますが、僕がそうであるように、二次募集のメンバはそれなりに使えている人が多いのではないでしょうか。楽天モバイルは最近頑張ってアンテナ立てているのと、 au とのローミングがシームレスに行っているような気がします。

とわ言いつつ、都内での利用状況のみなので、ちょっと遠出をしたときにどうなるのか、それはそれで楽しみではあります;-)。

今回はファースト・インプレッションなのでここまで。

 
そーそー。「無料サポータープログラム」に参加している人はレポートを出さなければならないのですが、第一回目のメールが届きました。
これが、ウェブベースのアンケート形式で、結構時間が取られる。全部回答するのに大体 20 分くらいかかりました。
これで楽天ポイント 2,000と 100GB の『ギガ』が利用できるので、まぁ、ヨシとして置きますかねぇ。と、いうか、ちゃんとレポート上げて楽天モバイルの品質向上に貢献しないと;-)。

 
Softbank の初期の、回線状況がボロボロだった頃に僕は iPhone3G を利用していたのですが、状況的に似ているような気がします;-)。

立ち上げ時のドタバタに参加するのは非常に楽しいですね。僕は『二度目のキャリアの立ち上がりに参加している。』と思うとワクワクします;-)。

1月 092020
 

2020 年の 正月に ports を csv update したら Firefox72 が降って来ていたので、そのまま FreeBSD/amd64 12.1-RELEASE にインストール。
しかし、ハタと考えてみた。『Firefox って 72 から HTTP/3 をサポートしたんじゃなかったけっ?』
果たして about:config で確認してみると

network.http.http3.enabled

と、いうのがあるではないかっ!! これをすかさず true にして google などを確認してみる。

HTTP/3 というのは、チョー簡単に言うと UDP で SSL 通信を行うものであります。詳細についてはウェブで情報を探してください;-P。
ファイアーウォールなどで UDP の 443 ポートなんてのは中々開いているものではないので、自宅なり、オフィスなりのファイアーウォールをまず先に確認してみましょう。

 
しかし、自分でも UDP:443 で通信するサーバを構築してみたい。色々探してみると apache24 はまだ、未対応ですが、 nginx は対応パッチが出ているようです。

まずは以下の URL にアクセス。

https://blog.cloudflare.com/experiment-with-http-3-using-nginx-and-quiche/

 
ここに記載されている git からパッチを取ってきて nginx のソースにパッチを当てて make しても良いんだけど、configure のオプションがややこすぃー。せっかく FreeBSD が手元にあるので ports の nginx に quiche パッチを適用してサーバ環境を構築してみましょう。

と、いうのが今回の趣旨です。ひと足お先に HTTP/3 を体験してみましょう。

このブログでは以前に apache24 で HTTP/2+TLSv1.3 対応にするエントリを書いていますが、今回は nginx のエントリになります。

 
1). ports の準備
以下に手順を書いてみます。

# cd /usr/ports/www/
# cp -pr nginx nginx-http3
# cd nginx-http3/
# git clone --recursive https://github.com/cloudflare/quiche
# make patch

 
原本となる /usr/ports/www/nginx/ は一応残しておいて nginx-http3/ というディレクトリで作業を始めます。
git から quiche を一式持ってきて、ports 的には make patch まで走らせます。make patch 時に make config が走ると思いますがお好みの設定で、絶対に忘れてはいけないオプションが HTTP_SSL と HTTPV2 です。 default で [X] になっていると思うんですけどね。

 
2). パッチ適用

# cd work/nginx-1.16.1/
# patch -p01 < ../../quiche/extras/nginx/nginx-1.16.patch
# cd ../..

 
nginx-1.16 用の quiche パッチなので、最新の ports ツリーであれば容易に適用できます。

 
3). ports の Makefile の編集
www/nginx-http3/Makefile を編集します。上記 URL では configure オプションが記載されていますが、それを FreeBSD の ports に書いて上げます。

diff -ur Makefile.orig Makefile
--- Makefile.orig       2020-01-03 12:00:17.947717000 +0900
+++ Makefile    2020-01-03 12:01:29.885305000 +0900
@@ -53,6 +53,9 @@
 
 HAS_CONFIGURE= yes
 CONFIGURE_ARGS+=--prefix=${ETCDIR} \
+               --with-http_v3_module \
+               --with-openssl=/usr/ports/www/nginx-http3/quiche/deps/boringssl \
+               --with-quiche=/usr/ports/www/nginx-http3/quiche \
                --with-cc-opt="-I ${LOCALBASE}/include" \
                --with-ld-opt="-L ${LOCALBASE}/lib" \
                --conf-path=${ETCDIR}/nginx.conf \

 
さーっ!! 準備ができたのでいよいよ make だぁっ!! などと思っては行けません。 quiche 側のソースコードのコンパイルには rust の cargo build を実行するので、なんとっ!! ここへ来て、 rust をインストール必要があります。
Firefox を自前でコンパイルする人は既に rust はインストール済みだと思われるため簡単ですが、持っていない人は /usr/ports/lang/rust/ を make install しましょう。速いマシンでも 30 分くらいかかると思いますけど。

 
rust のインストールが終わったらいよいよ nginx を make install します。

 
以上で HTTP/3 対応 nginx のインストールが完了しました。めでたしめでたし。

 
4). nginx.conf の設定
nginx.conf の設定は抜粋のみです。

user  www;
worker_processes  4;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  16;
}

http {

    autoindex off;

    server {
        listen [::]:443 quic reuseport;
        listen [::]:443 ssl  http2;
        listen      443 quic reuseport;
        listen      443 ssl  http2;

        server_name         nx.icmpv6.org;

        access_log  /var/log/nginx/access_nx_icmpv6_org.log;

        location / {
            root   /usr/local/www/nginx;
            index  index.html index.shtml index.php;
            allow  all;
        }

        ssl_certificate     /usr/local/etc/letsencrypt/live/nx.icmpv6.org/cert_chain.pem;
        ssl_certificate_key /usr/local/etc/letsencrypt/live/nx.icmpv6.org/privkey.pem;

        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_session_cache   shared:SSL:1m;
        ssl_session_timeout 5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        add_header alt-svc 'h3-23=":443"; ma=86400';

        http3_max_concurrent_streams 128;
        http3_max_requests           1000;
        http3_max_header_size        16k;
    }
}

 
listen は計 4 行ありますが、HTTP/3 で接続する場合には 443 quic reuseport の行が利用されます。 HTTP/3 に対応していないブラウザでは HTTP/2 で待ち受けるので、その設定は 443 ssl http2 になります。

そして、IPv6/IPv4 のデアルスタクです。

HTTP/2 も HTTP/3 も SSL が必須なので証明書を準備しましょう。 SSL 関連の設定もお忘れなく。

 
5). 実際に起動してみる
まず、何はなくとも以下のコマンドを叩いて確認。

$ netstat -an | grep 443
tcp4       0      0 *.443                  *.*                    LISTEN     
tcp6       0      0 *.443                  *.*                    LISTEN     
udp4       0      0 *.443                  *.*                    
udp4       0      0 *.443                  *.*                    
udp6       0      0 *.443                  *.*                    
udp6       0      0 *.443                  *.*
$
# tcpdump -i em0 udp port 443

 
うぉー。udp4,6 で port:443が開いているっ!!
tcpdump を起動して、UDP の port:443 でパケットが流れているか、確認ができます。
また、nginx のアクセスログで "GET / HTTP/2.0" は TCP Port:443 の接続になります。 "GET / HTTP/3" が UDP の Port:443 の接続になります。
上記の nginx の設定ではもう HTTP/2 か HTTP/3 の接続になりますな。高級なブラウザの場合は HTTP/2 か HTTP/3で、 w3m でアクセスするとようやっと "GET / HTTP/1.0" でのアクセスになります。

 
あとは nginx の root パスにドカドカコンテンツを置いていけば良いと思われます。

しかし、 netstat -an で UDP port:443 を確認して待受状態になっているにも関わらず接続できない場合があります。
サーバ側で tcpdump で確認してみると、クライアント側からアクセスがあるだけで、サーバ側からの応答がない場合が・・。しかし、とあるタイミングでは接続できるので・・。今の所 nginx を再起動してみたりと、いう運用ですかねぇ。

あと、Firefox72 は HTTP/3 で接続できなかった場合 HTTP/2 や HTTP/1.1 にフェイルオーバーしません。 HTTP/3 の応答が無くともずっと待っている状態になります。 about:config の HTTP/3 のタイムアウト設定も見当たらないし・・。

 
と、いうことで、今から遊ぶには十分に楽しい HTTP/3 です。FreeBSD では ports を利用すると Firefox72 は使えるわ、 nginx は ports にパッチを当てるだけで configure オプションに悩まなくて済むわ。比較的容易に、そして十分に楽しめること間違いなしです。

ここいらで UDP の世界にどっぷりとハマってみるのも良いのではないでしょうか;-)。