トップ 最新 追記

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|

2024-06-03 [長年日記]

_ [雑記]Let'snote FV5到着

LV8からのリプレース機

Meteor Lake-Pなので、そのままだと色々デバイス認識しないので、ハックする

一応、タッチパッドと無線LANのdriver attachまでは出来たので、/etc, /usr/local/etcまわりの設定作業と運用試験に進める

実運用に移るのに必要な確認項目

  • 11a(OFDM/54Mbps・WPA2/802.11i)での通信疎通を確認 (済み)
  • Xorgでタッチパッドのタップ操作・エッジスクロール操作を有効化しての動作を確認 (済み)
  • XorgでBluetooth mousedeviceの動作を確認 (済み)
  • スリープ動作を確認する (出来なくても致命的ではないが…)

Meteor Lake-PがPコア/Eコア/LEコア混載なので、thread scheduler起因とおぼしき妙な遅延(LEコアにタスクが割り当てられている?)や有線LANの速度低下(Rx側で顕著)が見られる

確かに、Pコアx6だけでもmake buildworldはLV8より早いのだが、LV8だと素直に上り下り共に110MB/sec出てるのに、FV5だとRxが60MB/sec止まり Orz

_ [FreeBSD]FreeBSD 14.1もうすぐリリース

RC1通過で、そのままRELEASE BUILDに入った模様


2024-06-05 [長年日記]

_ [FreeBSD]Intel AX211 Bluetooth on FreeBSD

コメントにある通り、小手先のidProduct追加程度ではどうにもなりそうに無いくらい前世代から仕様が異なる模様

一応、実験的なコードはある模様なので、実験してみる

試してみた

  • iwmbtfw(8)単体は走る
    • ugen経由で待機中のUSB bluetoothドングルにファームウェアをダウンロードし、成功したらUSBドライバスタックをリスタートする(結果として、ng_ubtがprobe/attachされる)
    • CF-FV5Uだと usr.sbin/bluetooth/iwmbtfw/main.cswitch (ver.hw_variant)ブロックにver.hw_variant = 0x1bが渡ってくる
      • 番号の間隔を考えるとCPU同梱のI/Oコントローラ世代毎に違うのでは?
    • firmwareとしてibt-0180-0041.sfiibt-0180-0041.ddcが要求されるが、iwmbt-firmware-20230515パッケージに入っていない
  • 2024/06/06時点のコードだと、iwmbtfwが成功しても、ubt0が生えない
    • sys/netgraph/bluetooth/drivers/ubt/ng_ubt_intel.cusr.sbin/bluetooth/iwmbtfw/main.cを読み比べて、USBドングルからのメッセージ解析器を比べたところ、ng_ubt_intel.cubt_intel_tlv_is_firmware_running()でデータ列の初期位置をpos = offsetof(struct ubt_hci_event_command_compl, data);で初期化しているが、データ構造的には pos = 0;の間違いだと思われる
      • 修正するとubt0が生えて、Bluetooth mouseとの通信確立・Xorgでの動作を確認出来た
        • 動作確認時の ibt-0180-0041.sfiは、Revision 23.20.0.3
      • Reviewでは動いたとの報告があるので、最初のデータエントリ長とposの初期値がたまたま整合して動いてたのでは?
        • 手元の環境では、パッチしないと個別エントリの切り出した境界とデータパケットの末尾の位置が合わない模様
  • 後ほど、必要な修正点をまとめる
    • ibt-0180-0041.sfiのRevision確認
    • ng_ubt_intelドライバの修正項目
Command: iwmbtfw -D -I -d ugen1.4 -f /usr/local/share/iwmbt-firmware
main: opening dev 1.4
iwmbt_is_tlv: found TLV
iwmbt_dump_one_tlv: TLV: 0x10 = 0x00000800
iwmbt_dump_one_tlv: TLV: 0x11 = 0x00000410
iwmbt_dump_one_tlv: TLV: 0x12 = 0x00003700
iwmbt_dump_one_tlv: TLV: 0x15 = 0x0613
iwmbt_dump_one_tlv: TLV: 0x16 = 0x0000
iwmbt_dump_one_tlv: TLV: 0x17 = 0x8087
iwmbt_dump_one_tlv: TLV: 0x18 = 0x0033
iwmbt_dump_one_tlv: TLV: 0x1c = 0x01
iwmbt_dump_one_tlv: TLV: 0x1d = 0x1612
iwmbt_dump_one_tlv: TLV: 0x1e = 0x01
iwmbt_dump_one_tlv: TLV: 0x1f = 0x0000c072
iwmbt_dump_one_tlv: TLV: 0x27 = 0x00
iwmbt_dump_one_tlv: TLV: 0x28 = 0x01
iwmbt_dump_one_tlv: TLV: 0x29 = 0x00
iwmbt_dump_one_tlv: TLV: 0x2a = 0x01
iwmbt_dump_one_tlv: TLV: 0x2b = 0x01
iwmbt_dump_one_tlv: TLV: 0x2c = 0x00
iwmbt_dump_one_tlv: TLV: 0x2d has unhandled length of 3
iwmbt_dump_one_tlv: TLV: 0x2e = 0x00
iwmbt_dump_one_tlv: TLV: 0x2f = 0x01
iwmbt_dump_one_tlv: TLV: 0x30 has unhandled length of 6
iwmbt_dump_one_tlv: TLV: 0x31 = 0x00
iwmbt_dump_version: status       0x00
iwmbt_dump_version: hw_platform  0x37
iwmbt_dump_version: hw_variant   0x1b
iwmbt_dump_version: hw_revision  0x00
iwmbt_dump_version: fw_variant   0x00
iwmbt_dump_version: fw_revision  0x00
iwmbt_dump_version: fw_build_num 0x00
iwmbt_dump_version: fw_build_ww  0x00
iwmbt_dump_version: fw_build_yy  0x00
iwmbt_dump_version: fw_patch_num 0x00
main: fw_variant=0x00
main: firmware_path = /usr/local/share/iwmbt-firmware/ibt-0180-0041.sfi
iwmbt_init_firmware: loading /usr/local/share/iwmbt-firmware/ibt-0180-0041.sfi
iwmbt_load_fwfile: file=/usr/local/share/iwmbt-firmware/ibt-0180-0041.sfi, size=824316
iwmbt_load_fwfile: transferring 128 bytes, offset 644
...
iwmbt_load_fwfile: transferring 208 bytes, offset 824076
iwmbt_load_fwfile: transferring 4 bytes, offset 824284
iwmbt_load_fwfile: boot_param=0x00100800
iwmbt_load_fwfile: transferring 28 bytes, offset 824288
main: Firmware download complete
main: Firmware operational
iwmbt_dump_version: status       0x00
iwmbt_dump_version: hw_platform  0x37
iwmbt_dump_version: hw_variant   0x1b
iwmbt_dump_version: hw_revision  0xa0
iwmbt_dump_version: fw_variant   0x63
iwmbt_dump_version: fw_revision  0x0c
iwmbt_dump_version: fw_build_num 0x00
iwmbt_dump_version: fw_build_ww  0x00
iwmbt_dump_version: fw_build_yy  0x0e
iwmbt_dump_version: fw_patch_num 0x18
main: ddc_path = /usr/local/share/iwmbt-firmware/ibt-0180-0041.ddc
iwmbt_init_ddc: loading /usr/local/share/iwmbt-firmware/ibt-0180-0041.ddc
iwmbt_load_ddc: file=/usr/local/share/iwmbt-firmware/ibt-0180-0041.ddc, size=9
iwmbt_load_ddc: transferring 4 bytes, offset 0
iwmbt_load_ddc: transferring 5 bytes, offset 4
main: DDC download complete
main: Intel Event Mask is set
main: Firmware download is successful!

Command exit status: 0

2024-06-06 [長年日記]

_ [FreeBSD]FreeBSD on Let'snote FV5まとめ

運用に必要な道具はだいたい揃ってきたので、/etc, /usr/local/etcを整理と/home同期を行って入れ替えかなぁ…(Windows側の設定・データ引き継ぎ作業が残っているが)

  • 有線LAN(em0)測定環境が原因の模様
    • 普通に動くが、Rxが60MB/s程度しか出ない
    • cpusetでirqへのコア割り当てを変えると状況が悪化した Orz
  • 無線LAN(iwlwifi0)
    • firmware moduleの追加が必要
    • 54Mbps動作(11a/11g)は出来るが、Txが遅い(Tx 579KByte/s・Rx 3024KByte/s)
  • X.org
    • intelドライバはDRMが未サポートで使えないが、scfbドライバで動く
  • Bluetooth(ubt0)
    • パッチ必要だが、Bluetooth mouseは動く
  • TouchPad(hmt0/iichid0)
    • パッチ必要・libinput側での設定が必要
  • math/openblas
    • TARGET_CPU_ARCH=HASWELLが必要
  • Audio
    • 内蔵スピーカがpcm0、左側ヘッドホン端子がpcm1に繋がっており、問題なく鳴る
    • pcm0側にmicが認識されているが、xlevel等でテストしても有意な信号を確認出来ない
      • Windows11側で確認したが、内蔵マイクはMicrophon Array(Intel Smart Sound Technology)なので、Intel HDA側からは見えない模様
      • DSP等のプロセッサファームウェアを開発するSound Open Firmwareがあるらしい
    • 現状、FreeBSDから内蔵マイクが使えない
      • 必要なら小型のマイク付きWebCamでも導入するか?
  • カメラ
    • multimedia/webcamdをインストールすれば問題なく使える
  • P/E/LEコア混載
    • コアグループの認識はするが、コアの差異を考慮したスケジューリングは出来てないぽぃ
    • ACPIのIRQ割り当ては、それなりに考慮されている?
    • Intel Thread Directorの初期サポートコードはまだ提案段階

_ [雑記]Windows環境の引き継ぎ

とりあえず、必要そうな作業のピックアップ

  • 各種アプリケーションのインストール・設定
  • ブラウザのプロファイル引き継ぎ
    • Firefoxプロファイルの採取・移植
    • Microsoft Edgeに関しては、MSアカウント経由で同期出来る?
    • 旧IE上のデータはどうする(ブックマーク・パスワードデータベース等々)

_ [FreeBSD]FreeBSD環境設定

設定系は、ほぼ完了

後は、/homeの転送・同期して本番環境と入れ替えるのみ

現時点で判明しているCF-LV8に対するRegressionは…

  • 内蔵マイクがFreeBSDから使えない (Intel Smart Sound Tech.ベースらしい)
    • ネットワーク会議をWindows11側で処理する or USB WebCam/マイクを導入する
  • 有線LANのRx帯域が60%程しか出ない
    • 実用上問題ないが、CF-LV8に負けるのは釈然としない
    • 将来的には、em driverもしくはthread schedulerの改良で改善するか?
  • 無線LANのTx帯域10~20%程しか出ない
    • Rx帯域は、理論値の半分前後出ていたので普通
    • iwlwifi driverの品質問題か?
      • 後で手持ちのrtwn(tp-link AC600ナノ無線LAN子機 - 小さくてFreeBSDで安定に動くWLANアダプタ)と比較してみる

あとは、Windows環境の引き継ぎ作業がまるまる残っている

それと、Bluetooth firmwareの検証とパッチの整理 (CF-FV5まとめにまとめた)


2024-06-08 [長年日記]

_ [FreeBSD]FreeBSD on Let'snote FV5

LV8との違いで見つけた件

  • acpi_video.koをロードしても、hw.acpi.video.lcd0生えてこない
    • hw.acpi.video.lcd0.brightnessを使った液晶輝度制御が出来ない
    • acpi_panasonic.kohw.acpi.panasonic.lcd_brightnessは生えてるし、Fn+F1/F2で変化するが、液晶輝度が変化しない Orz
    • CF-LV8だと、hw.acpi.video.lcd0.brightnessが生えていて、実際に液晶輝度が変えられる
      • でも、FreeBSD 12入れた当時と異なり、液晶輝度が細かく変わらないように見える
        • インストーラレベルでテスト出来るはずなので、古いインストーライメージを引っ張ってきて確認すべきか?

stable/14ベースでの調査結果

acpi_videoのprobe/attachで照合している内部情報を吐かせるパッチを当てて、CF-FV5とCF-LV8を比べてみる

  • 調査用のパッチ
--- sys/dev/acpica/acpi_video.c.orig
+++ sys/dev/acpica/acpi_video.c
@@ -528,6 +528,9 @@ acpi_video_bind_outputs_subr(ACPI_HANDLE handle, UINT32 adr, void *context)
        struct acpi_video_softc *sc;
        struct acpi_video_output *vo;

+       if (bootverbose)
+         printf("acpi_video_bind_outputs_subr: %s\n", acpi_name(handle));
+
        ACPI_SERIAL_ASSERT(video);
        sc = context;

@@ -564,6 +567,9 @@ acpi_video_vo_init(UINT32 adr)
        const char *type, *desc;
        struct acpi_video_output_queue *voqh;

+       if (bootverbose)
+               printf("acpi_video_vo_init[0x%08x]\n", adr);
+
        ACPI_SERIAL_ASSERT(video);

        switch (adr & DOD_DEVID_MASK) {
@@ -698,6 +704,9 @@ static void
 acpi_video_vo_bind(struct acpi_video_output *vo, ACPI_HANDLE handle)
 {

+       if (bootverbose)
+         printf("acpi_video_vo_bind: %s\n", acpi_name(handle));
+
        ACPI_SERIAL_BEGIN(video_output);
        if (vo->vo_levels != NULL) {
                AcpiRemoveNotifyHandler(vo->handle, ACPI_DEVICE_NOTIFY,
@@ -1021,16 +1030,37 @@ vid_enum_outputs_subr(ACPI_HANDLE handle, UINT32 level __unused,
        ACPI_SERIAL_ASSERT(video);
        argset = context;
        status = acpi_GetInteger(handle, "_ADR", &adr);
+       if (bootverbose) {
+         if (ACPI_FAILURE(status))
+           printf("vid_enum_outputs_subr: %s._ADR -> failed\n", acpi_name(handle));
+         else
+           printf("vid_enum_outputs_subr: %s._ADR -> 0x%08x\n", acpi_name(handle), adr);
+       }
        if (ACPI_FAILURE(status))
                return (AE_OK);

        for (i = 0; i < argset->dod_pkg->Package.Count; i++) {
+#if 1
+         ACPI_HANDLE bcl;
+         if (ACPI_FAILURE(AcpiGetHandle(handle, "_BCL", &bcl)))
+           bcl = NULL;
+         if (acpi_PkgInt32(argset->dod_pkg, i, &val) == 0) {
+           if ((val & DOD_DEVID_MASK_FULL) == (adr & DOD_DEVID_MASK_FULL)) {
+             printf("vid_enum_outputs_subr:  HIT DOD[%zd] -> 0x%08x [_BCL=%s]\n", i, val, bcl ? "true" : "false");
+             argset->callback(handle, val, argset->context);
+             argset->count++;
+           } else if (bootverbose)
+             printf("vid_enum_outputs_subr: MISS DOD[%zd] -> 0x%08x [_BCL=%s]\n", i, val, bcl ? "true" : "false");
+         } else if (bootverbose)
+           printf("vid_enum_outputs_subr[%zd]: dod_pkg error\n", i);
+#else
                if (acpi_PkgInt32(argset->dod_pkg, i, &val) == 0 &&
                    (val & DOD_DEVID_MASK_FULL) ==
                    (adr & DOD_DEVID_MASK_FULL)) {
                        argset->callback(handle, val, argset->context);
                        argset->count++;
                }
+#endif
        }

        return (AE_OK);
@@ -1050,6 +1080,9 @@ vid_enum_outputs(ACPI_HANDLE handle,
        dod_buf.Pointer = NULL;
        status = AcpiEvaluateObject(handle, "_DOD", NULL, &dod_buf);
        if (ACPI_FAILURE(status)) {
+               if (bootverbose)
+                 printf("vid_enum_outputs: package[%s._DOD] evaluation failure[%d].\n", acpi_name(handle), status);
+
                if (status != AE_NOT_FOUND)
                        printf("can't evaluate %s._DOD - %s\n",
                               acpi_name(handle), AcpiFormatException(status));
@@ -1071,6 +1104,8 @@ vid_enum_outputs(ACPI_HANDLE handle,
        argset.context  = context;
        argset.dod_pkg  = res;
        argset.count    = 0;
+       if (bootverbose)
+         printf("vid_enum_outputs: Wake in namespace[%s]\n", acpi_name(handle));
        status = AcpiWalkNamespace(ACPI_TYPE_DEVICE, handle, 1,
            vid_enum_outputs_subr, NULL, &argset, NULL);
        if (ACPI_FAILURE(status))
  • CF-LV8 (うまくhw.apci.video.lcd0が生えるケース)
    • \\134_SB_.PCI0.GFX0.DD1Fの_ADR_DODリスト(Enumerate All Devices Attached to the Display Adapter)に照合し、_BCLメソッド(Query list of brightness control levels supported)が実装されている
    • stable/14だとうまく輝度調整が動かないのはなぜだろう(stable/12で導入した直後は確かに輝度が段階的に変わるのを確認したのだが…)
acpi_video0: <ACPI video extension> on vgapci0
vid_enum_outputs: Wake in namespace[\134_SB_.PCI0.GFX0]
vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD01._ADR -> 0x00000100
vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD02._ADR -> 0x00000002
vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD03._ADR -> 0x00000300
vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD04._ADR -> 0x00000301
vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD05._ADR -> 0x00000302
vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD06._ADR -> 0x00000303
vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD07._ADR -> 0x00000304
vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD08._ADR -> 0x00000305
vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD09._ADR -> 0x00000009
vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD0A._ADR -> 0x0000000a
vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD0B._ADR -> 0x0000000b
vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD0C._ADR -> 0x0000000c
vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD0D._ADR -> 0x0000000d
vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD0E._ADR -> 0x0000000e
vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD0F._ADR -> 0x0000000f
vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD1F._ADR -> 0x00000400
vid_enum_outputs_subr:  HIT DOD[0] -> 0x00000400 [_BCL=true]
acpi_video_bind_outputs_subr: \134_SB_.PCI0.GFX0.DD1F
acpi_video_vo_init[0x00000400]
found Internal/Integrated Digital Flat Panel(400), idx#0, port#0, head #0
acpi_video_vo_bind: \134_SB_.PCI0.GFX0.DD1F
vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.IPUA._ADR -> 0x00003480
vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false]
  • CF-FV5 (hw.acpi.video.lcd0が生えないケース)
    • \\134_SB_.PC00.GFX0.DD1F及びDD2Fに_BCLが実装されているが、_ADRが共に0x001fで、_DODリストに照合しない
    • _DODリストが2エントリ共に0x10000を指している
    • 内蔵LCDパネルなら、当該デバイスの_ADR_DODの登録は0x04##になるはずなのだが…
    • ACPICAの規格書を斜め読みした範囲では、Firmware側に正しい情報が登録されていないように見える Orz
acpi_video0: <ACPI video extension> on vgapci0
vid_enum_outputs: Wake in namespace[\134_SB_.PC00.GFX0]
vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD01._ADR -> 0x00000001
vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD02._ADR -> 0x00000002
vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD03._ADR -> 0x00000003
vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD04._ADR -> 0x00000004
vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD05._ADR -> 0x00000005
vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD06._ADR -> 0x00000006
vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD07._ADR -> 0x00000007
vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD08._ADR -> 0x00000008
vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD09._ADR -> 0x00000009
vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD0A._ADR -> 0x0000000a
vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD0B._ADR -> 0x0000000b
vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD0C._ADR -> 0x0000000c
vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD0D._ADR -> 0x0000000d
vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD0E._ADR -> 0x0000000e
vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD0F._ADR -> 0x0000000f
vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false]
vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD1F._ADR -> 0x0000001f
vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=true]
vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=true]
vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD2F._ADR -> 0x0000001f
vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=true]
vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=true]

_ [FreeBSD]buildworld+buildkernel ベンチマーク対決

Let'snote LV8 vs FV5でビルドタイム比較

Sourceは、stable/14のもの

Model CPU -j# world+kernel
CF-FV5U Core Ultra 7 165H(6P/8E/2LE) 12(6P) 94:19
CF-FV5U Core Ultra 7 165H(6P/8E/2LE) 22 69:58
CF-LV8 Core i7 8665U(4C) 8 144:56
EQ12Pro Core i3 N305(8E) 8 79:45

ノート対決だと、4C/8T→6C/12Tで順当にタイムが縮んでいる

が、AlderLake-Nの8C/8T相手だと、MeteorLake-Pの6P/12Tだけだと負けてる

物理コア数を考えれば、Meteor Lake-Pが健闘している事に…

もちろん、全コア投入で適切にスケジュール出来れば優位になるはずだが、 そうそう巧く行くものだろうか?

6C/8E/2LE計22-thread投入で94:19(6P)→69:58 なので劇的な短縮にはならないものの、LV8比で2倍強の性能になっている (ある意味、カタログ通り LV9→FV5でビジネスベンチで2.1倍弱と喧伝されていたはず)

_ [雑記]Filesystem coding変換

EUC-JPからUTF-8へ変換実施

UTF-8モードで稼働するFDcloneでは、波ダッシュ(U+301C)だと表示がバグる

xterm/kterm(utf-8モード)上のlsだと問題無いので、内部処理で何か変換してる?

  • FDClone内部で、EUC-JP or ShiftJISへ変換して処理しているため、外部コード(UTF-8)→内部コード→外部コードのラウンドトリップで処理化けしている
  • EUC-JP的には、波ダッシュ(U+301C)・全角チルダ(U+FF5E)が縮退している
    • 参考 https://www.tohoho-web.com/ex/dash-tilde.html
    • nkfのEUC-JP→UTF-8変換は、波ダッシュ(U+301C)を選ぶ
    • subversionに、EUC-JPでcommitしたものをUTF-8でcheckoutすると波ダッシュ(U+301C)を選ぶ
    • Anthy/Emacsも、ダッシュ記号の全角モードは、波ダッシュ(U+301C)
    • FDCloneは、全角チルダ(U+FF5E)を期待している

解決法は、

  1. パス中の波ダッシュ(U+301C)を全角チルダ(U+FF5E)へ置き換える
  2. FDCloneの変換テーブル(mkunitbl.c)を修正する

FreeBSD側メインでの運用を想定すると、FDCloneの変換テーブルにパッチを当てる方が素直かも

とりあえず書いてみた

CFLAGSに、-DWAVE_DASH付けてコンパイルするとUnicode - 内部コード変換で、U+FF5Dの代わりにU+301Cを使う

元より、符号定義や運用実態が錯綜する領域なので、運用環境によっては障害が生じる点に留意

(Windows 9x相手のファイル共有を行う場合、Samba側にも手当てが必要か?)

--- mkunitbl.c.orig     2019-07-27 00:00:00.000000000 +0900
+++ mkunitbl.c  2024-06-09 15:11:47.662354000 +0900
@@ -339,6 +339,9 @@
        {0x3013, 0x81ac},
        {0x3014, 0x816b},
        {0x3015, 0x816c},
+#ifdef WAVE_DASH
+       {0x301c, 0x8160},
+#endif
        {0x301d, 0x8780},
        {0x301f, 0x8781},
        {0x3041, 0x829f},
@@ -9245,7 +9248,9 @@
        {0xff5b, 0x816f},
        {0xff5c, 0x8162},
        {0xff5d, 0x8170},
+#ifndef        WAVE_DASH
        {0xff5e, 0x8160},
+#endif
        {0xffe0, 0x8191},
        {0xffe1, 0x8192},
        {0xffe2, 0x81ca},

2024-06-10 [長年日記]

_ [FreeBSD]ee(1) on ja_JP.UTF-8

日本語(おそらくマルチバイト文字)を含む行末へCtrl-Eでカーソルを飛ばすと、 実際の行末より後ろにカーソルが飛んでいく

カーソルの位置計算がおかしい?

多分、eucJPだとワイド文字~2byte符号だったのが、utf-8だと典型的には3byte符号化している為では…

試しに、utf-8で一文字毎に送っていくと、ワイド文字で2回足踏みする

まあ、元々マルチバイト文字にきちんと対応していない訳なのだが、 eucJPだとそこそこ実用になったので重宝していた(軽いし)

_ [FreeBSD]kterm on ja_JP.UTF-8

LANG=ja_JP.UTF-8なKanjiMode utf8運用時、表示やコピーペーストは問題ないが、XIM入力が文字化けする

X Resource Databaseの状態が錯綜していたので、整理してみた...

  • 標準状態でInput() @ input.cは、XIMのエンコードをja_JP.eucJPで初期化し、入力列にEUC-JPを期待しているが、convEUCtoUTF8によるEUC-JP→UTF-8で化ける (convUTF8へ渡ってくるUCS-4 BMPのコードポイントが既にあってない)
  • eucJPLocaleリソースでXIMのエンコードをja_JP.UTF-8へ変更しても、input.c側はXIMからの入力をEUCとして処理するので、化ける

解決方法に関して、

  1. convEUCtoUTF8をまともに修正する
  2. eucJPLocaleja_JP.UTF-8に設定し、Input() @ input.cでの変換を停止する
  • (1)が使う変換テーブルは、convCStoUTF8で使うものと共通の模様 (convCStoEUCと読み比べればなにか分かるはず)
    • ucode_kanji1の参照位置が、convCStoUTF8の(c1-33)*94+(c2-33)に対し、convEUCtoUTF8は(c1-33)*94+(e2-33)で、e2=c2+0x80だから128-offsetして参照してる Orz
    • 治した
--- convert.c.orig      2016-11-05 06:41:21.000000000 +0900
+++ convert.c   2024-06-13 12:50:40.353827000 +0900
@@ -1106,7 +1106,7 @@
                        if (e2 = *es++) {
                                int c1 = e1 & ~0x80;
                                int c2 = e2 & ~0x80;
-                               int ucode = ucode_kanji1[(c1-33)*94 + (e2-33)];
+                               int ucode = ucode_kanji1[(c1-33)*94 + (c2-33)];
                                int len = utf8_len(ucode);

                                if (ucode == U_error) {
  • (2)で、UTF-8モードが動くことは確認したが、EUC/SJIS/JIS Modeが使えなくなる(正確にはXIM経由が文字化けする)

素直にutf-8モードのxtermに移れ説はあるのだが、仕様しているフォントのグリフセットの都合で一部不具合が出るのでもうしばらくktermで頑張りたい (local filesystem上で、xterm向けのiso10646 fontにグリフが未実装な文字が使われてる)

_ [雑記]Let'snote FV5の意外な弱点

実は、LV8より単純にバッテリー容量が小さい

出っ張りの無いフラットデザインなため、単純に体積が減っているためと思われる (光学ドライブを下ろして空いたスペースにバッテリを配置し、キーボード下に配したメインボードを後方排気クーラーと直結するレイアウトなので、他に合理的な配置が無い&前方配置なのでバッテリー部を厚くする余地が無い)

バッテリーパック(L)の仕様は以下の通り

バッテリ定格電圧定格容量重量
LV8用(L)10.80V6300mAh(68.0Ah)355g
FV5用(L)11.55V4786mAh(55.3Wh)300g

バッテリ重量からみるとかなり健闘しているし、フットプリントが小さいSR/QR系よりマシなのだが…

バッテリパック(L)装着時のカタログ上の駆動時間は以下の通り

モデルJEITA2.0JEITA3.0(動画)JEITA3.0(アイドル)
LV818.5h n/a n/a
FV520.0h 9.0h18.1h

で、FreeBSD等で稼働状態でacpiconf -i0の推定稼働時間を測定してみると、LV8 5~6時間に対してFV5 4~5時間になる

acpiconfが報告するアイドリング時の消費電力は、LV8 8~9Wに対してFV5 9~14Wなので、 バッテリ容量の減少も相まって実稼働時間はかなり不利な模様

もちろん、稼働コア数(4C/8T vs 6P+8E+2LE/22T)を考慮すれば、大変効率的になっているのだが…

カタログ稼働時間は、電力消費をギリギリまで絞り込んだ値なんだけど、JEITA3.0もかなり現実から遠い気がする

現状、acpi_videoでバックライト制御が出来てない分は分かるが、CPUパワーとかどうやってそこまで絞ってるんだか Orz


2024-06-11 [長年日記]

_ [FreeBSD]libreoffice + glib-2.80.2,2の件

以前報じたdevel/glib20をアップグレードするとlibreofficeが起動しなくなる件だが、 glib-2.80.3,2で修正されたことを確認

どうやら、libreofficeのBugzillaに報告されている通り、 glib-2.80.1のエラッタでglib-2.80.3で修正された模様

でも、Ctrl-qでlibreofficeが終了出来ずに、クラッシュからの回復画面に戻ってしまうバグがぁぁぁ Orz


2024-06-13 [長年日記]

_ [FreeBSD]Letsnote FV5の有線LANでスピード出ない件

接続経路を変えたら問題なくTx/Rx共に110MB/sec出たので、ハードウェア的な相性がある模様...

  • 経路(A) - Let'snote - Cat.6A(1m) - 10GBASE-T port on QSW-M1208-8C / SFP+ port on QSW-M1208-8C - SFP+-DA Cable - Mellanox Connect X-6
  • 経路(B) - Let'snote - Cat.6A(3m+1m) - 10GBASE-T SFP+ plugin module on QSW-M1208-8C / SFP+ port on QSW-M1208-8C - SFP+-DA Cable - Mellanox Connect X-6
  • 経路(C) - Let'snote - Cat.6A(1m) - 10GBASE-T SFP+ plugin module on QSW-M1208-8C / SFP+ port on QSW-M1208-8C - SFP+-DA Cable - Mellanox Connect X-6 (Bのケーブル違い・Aの1mケーブルを使用)
Let'snote経路(A)経路(B)経路(C)
CF-FV5U Tx 111MB/s / Rx 111MB/sTx 110MB/s / Rx 60MB/sTx 110MB/s / Rx 62MB/s
CF-LV8W Tx 110MB/s / Rx 110MB/sTx 110MB/s / Rx 68MB/s -

どうやら、10GBASE-T SFP+ plugin moduleとの接続相性もしくは間に入っている長めの継ぎ足しパッチケーブル(爪折れ対策にノート側で短いケーブルを継ぎ足している)が原因の模様

10GBASE-T SFP+ plugin moduleを別のモジュールに差し替えた直後は、Tx/Rx共に110MB/sが出たのでモジュールの発熱が原因か?


2024-06-15 [長年日記]

_ [FreeBSD]libreoffice + glib-2.80.3,2

数日前にglib-2.80.3へのアップデートでlibreoffice起動問題が修正されたが、終了時にトラブル件だが、 libreoffice側の起動不良が繰り替えされた環境で生じる問題かも知れない…

_ [FreeBSD]FreeBSD on Let'snote FV5

FV5セットアップの過程で判明した、現時点のOut of BoxなFreeBSD 14.1-STABLEでサポート不足なもの纏め

  • 無線LAN - firmware kernel moduleのみ不足・追加すれば11a/b/gで動作する
  • Bluetooth - iwmbtfw(8)・ubt driverへパッチ必要、ubt0認識後は普通に動いた(Bluetooth Mouseは使えた)
  • X.org - フルサポートはgraphics/drm-kmodの対応待ち、scfbドライバで最低限の動作はする
  • TouchPad - ig4iccドライバにパッチ(PCI Device ID追加)必要、ig4icc0認識後はHID Touch Padとして動く、X.orgでの使い心地はlibinput/synapticsドライバの設定次第
  • 内蔵マイク - Intel Smart Sound TechnologyによるArrayマイクなので、DSP側にFirmwareをダウンロードしないと使えない
  • ACPIスリープしない - ACPI S3ステートに代わりS0ixステートが実装されているため、S0ix(suspend-to-idle)もしくはS4(ハイバネーション)の実装が必要
  • acpi_video(4)が内蔵液晶を認識しない - 液晶輝度制御が出来ない(バッテリ駆動時の電力制御にマイナス)
  • Intel Thread Director - サポートが未実装、運用的にはcpuset(1)を駆使して使い分け?
  • Thunderbolt - NHI driver未実装、USB側はxhciドライバで動くはず(未テスト)

各種パッチを当てた状態での実用上の問題は、以下の通り

  • 内蔵マイク使えない - オンライン会議に別途USBマイク等が必要(小型のマイク内蔵USBカメラの方が入手性・携帯性に優れる)
  • スリープ出来ない - NVMe SSD構成なのでshutdownしての運搬でも実用には耐える
  • バッテリ稼働時間が短い - カタログスペックは、液晶輝度制御・コネクティングスタンバイ(S0ixステート)・CPU電力制御を駆使しての値なので、FreeBSDでの実稼働時間はカタログ稼働時間で劣るCF-LV8Wよりも短い
    • FreeBSD on Let'snoteとしては、致命的に短い(アイドルで5時間が実用限界なので、外部電源無しでは夕方まで持たない)
    • Type-C端子が2系統あるので、Anker等の67W給電可能なモバイルバッテリを外槽として運用するのが当面の現実解か?
      • 20Ah級モバイルバッテリで、バッテリ(L)パック1個分相当ぐらい?

2024-06-17 [長年日記]

_ [雑記]DP Alt Mode on Let'snote FV5

手持ちのモバイルディスプレイ(2560x1440)とLet'snote FV5との接続試してみた (kmsサポートがまだなので、Windows11にて試験)

  • USB-C - HDMI DP Alt Modeアダプタ経由 - 問題なく動く
  • USB-C - USB-Cケーブル経由 - パネルを認識・EDIDを拾えているが、表示出来ない おろ?

ちなみに、USB-C - USB-Cケーブルは、USB3 10Gbps(DP Alt Mode)とUSB4 40Gbpsの二種をためしたが、どちらもパネルを認識するが写らない

問題のモバイルディスプレイはLet'snote LV8ではType-C DP Alt Mode接続で問題なく動いた機材なのだが、 購入時期的にUSB3.x DP Alt Mode時代のものなのでUSB4 DP Alt Modeと非互換性がある?

Windows11でのモバイルディスプレイ動作状況まとめ

インターフェース DP Alt Mode HDMIアダプタUSB3.2 Gen1 10GbpsケーブルUSB4 40Gbpsケーブル
CF-FV5U(USB4/Thunderbolt 4) ×(*1)×(*1)
CF-LV8W(USB3.1/Thunderbolt 3)
  • DP Alt Mode HDMIアダプタはElecom AD-CHDMIQBK2 (Ryzen 7000のUSB-C/DP Alt Mode出力での起動試験用に準備したものでRyzen 7000 + X670EのUSB4/DP Alt Modeで実績有り)
  • 状況(*1)は、画面は写らないが、モバイルディスプレイの型名とEDID(サポートする解像度)は認識されている
    • パネル側は、No-signal扱いでスタンバイ状態に入ってしまう

2024-06-18 [長年日記]

_ [FreeBSD]_BCM method on Let'snote FV5

acpi_call(ports/sysutils/acpi_call)を使って調べたが、 _SB_.PC00.GFX0.DD1F._BCMで内蔵液晶の輝度が変わる

設定値が01314100acpiconf -i0が報告する電力と輝度が2値化する

低い方の設定だと、電力が1Wぐらい低下するがすごく暗くなる

113だと13の方が少し見やすいので明るくなってる?

1314が違い過ぎるので滑らかな輝度制御は別の手段が必要な模様

# acpi_call -v -p '\_SB_.PC00.GFX0.DD1F._BCM' -i 13

2024-06-28 [長年日記]

_ [FreeBSD]kterm + ibus-anthyでXIM入力

kterm + ibus-anthyで、なぜか全角~がXIM経由で入力出来ないので要調査

確認した振る舞い

  • xterm + ibus-anthyなXIM入力
    • U+FF5Eが入力される
  • firefox + ibus-anthyな入力
    • U+FF5Eが入力される
  • kterm + ibus-anthyなXIM入力
    • OverTheSpotで入力列を確定しても、shell promptに入力されない
    • ;~;を確定するとshell promptに入力されるのは;;
  • kterm + copy&paste
    • U+301C(WAVE DASH)及びU+FF5E(FULLWIDTH TILDE)をcopy&pasteで入力可能・表示グリフは異なるので別々の符号として扱われ、レンダリング時の内部処理でも別グリフとして扱われている
  • emacs + ibus-anthyなXIM入力
    • OverTheSpotで入力列を確定しても、bufferに入力されない
    • ;~;を確定するとbufferに入力されるのは;;

推論メモ

  • ibus-anthy側では、U+FF5E(FULLWIDTH TILDE)として扱われている (xterm XIM入力からの推論)
    • 関係する textproc/ibus, japanese/ibus-anthy, japanese/anthy の中で、U+FF5Eはどのcomponent由来か? (XIMが勝手に変換しているとは思えない)
  • utf8モードのktermは、copy&paste時はUTF-8を生のまま扱っているが、XIM入力はEUC-JP localeで受け取り内部でEUC-JP→UTF-8変換している (確認した実装)
    • ibus側もしくはXIM層(Xserver or library)でUTF-8→EUC-JP変換時にU+FF5Eが無効符号として消滅している (仮説 1)
    • 変なEUC符号位置に符号化されたU+FF5Eが、kterm側のEUC-JP→UTF-8変換でデコード出来ていない (仮説 2)
    • 以前調査で使ったkterm用の入力検証パッチを当てて、XIMからの入力列を拾えば、消滅地点がXIM以前かkterm受け取り後か検証できるはず

別解

  • XIM入力をutf8モード以外で使う予定がなければ、XIM locale(eucJPLocaleリソース)をja_JP.UTF-8で初期化して、XIMからの入力を無変換で取り込めば動く?

~(U+007E)の全角対応の不一致問題

  • xterm + ibus-anthty (XIM)では U+FF5E(FULLWIDTH TILDE)が割り当てられている
  • emasc + anthy (japanese-anthy input mode)では U+301C(WAVE DASH)が割り当てられている

調査結果

  • ibus-anthyによるXIM入力での変換マップは、engine/python3/tables.pyに実装されている
  • UNICODEの実体参照(\uff5e)で記述されている

2024-06-30 [長年日記]

_ [FreeBSD]xterm + ibus-anthyでXIM入力

kterm + ibus-anthyで、なぜか全角\がXIM経由で入力出来ない

確認した振る舞い

  • xterm + ibus-anthyなXIM入力
    • U+FF3C(FULLWIDTH REVERSE SOLIDUS)が入力される
  • kterm + ibus-anthyなXIM入力
    • OverTheSpotで入力列を確定しても、shell promptに入力されない
  • emacs + ibus-anthyなXIM入力
    • OverTheSpotで入力列を確定しても、bufferに入力されない

前のWAVE DASHの件と異なり、U+FF3CはEUC側にもCode Pointが定義されているはずなのだが…

ktermにデバック用のパッチを当てた状態での観測

  • デフォルトのEUC-JPなXIMだと、OverTheSpotで確定した文字列のEUC-JP符号で\相当の部分が欠損して到着している
  • XIMをja_JP.UTF-8ロケールで初期化すると、U+FF3Cに対応するUTF-8符号列 0xef 0xbc 0xbcが届く

従って、XIM層かibus側で欠損が発生している模様

現時点で判明している事実と今後調べるべき場所

確認済みの事実

  • ibus-anthyの入力処理engineの実装(pythonによる)では、変換表等はUTF-8で取り扱われている
  • UTF-8 modeなxtermやXIMをUTF-8 localeで初期化したktermには、UTF-8符号列でU+FF3Cが欠落せず届く
  • kterm defaultなXIM入力は、EUC-JP符号列で届くが、EUC-JPに対応する符号点があるにも関わらずU+FF3Cが欠落して届く
  • emacs + ibus-anthyなXIM入力でも同様の欠落が見られる

作業仮説

  • UTF-8 → EUC-JPへの変換過程で何らかの事情でU+FF3Cが欠落したと推論される
    • UTF-8とEUC-JPの相互変換では、EUC-JP側にU+FF3Cに対応するJISX0208由来の符号が存在するので、以下の可能性が考えられる
      • UTF-8 → EUC-JPの変換表の実装ミス
      • UTF-8 → EUC-JPの変換過程に、中間コードを経由しており、中間コードを介した変換時に符号落ちもしくは変換表の実装ミスがある

今後調べる場所

  • emacs + ibus-anthyなXIM入力でも欠損が再現しているので、emacsのXIM初期化時のlocaleを特定すべき
    • EUC-JP系以外であれば、消失地点を絞り込むヒントになる
  • XIM実装側の入出力列の変換機構
    • 少なくともXIM client libraryを含むlibX11には、エンコード変換ヘルパー関数群が実装されている

調べた

  • libX11/src/xlibi18n/lcUniConv/jisx0208.hの変換テーブルが臭い
    • JISX0208→CS(UCS-4)の変換jisx0208_mbtowcが参照するjisx0208_2uni_page21テーブルの実装
      • JISX0208 0x21-0x40 → U+FF3Cを実装
    • CS(UCS-4)→JISX0208の変換jisx0208_wctombが参照するjisx0208_uni2indx_pageff, jisx0208_2charsetテーブルの実装
      • U+005C → JISX0208 0x21-0x40
      • U+FF3C → INVALID
    • xlibi18nの実装を見る限り、U+FF3CをJISX0208側にマップ出来ていないぽぃ
      • JISX0208経由でEUC-JPへの変換が構成されている場合、U+FF3Cは消失しても不思議は無い気がする
      • 変換テーブルを修正してU+FF3C → 0x21-0x40のマッピングを追加したlibX11を作って、ktermを再起動してみたが治らない (外れ?それとも、ibus側の再起動が必要?)X sessionを再起動したら、U+FF3Cを入力出きるようになった
        • emacs + ibus-anthyなXIM入力もU+FF3Cが入るようになった
          • xtermの動作との違いから、XIM入力時のlocaleはUTF-8ではない?
      • 従って、本件の原因はlibX11/src/xlibi18n/lcUniConv/jisx0208.hの実装で確定

カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記