把裝有 Ubuntu 20.04筆電的 wi-fi 網卡升級到 AX210 後, 藍芽耳機切換到 A2DP codec 後就沒有聲音了 QQ. Google 了一下可能是 Ubuntu default 使用的 Pulseaudio 已經無法支援 AX210 的 BT driver. 只好參考網路的建議, 把 {ulseaudio 改成 Pipewire 試試看. Read more 14 Aug 2023 - less than 1 minute read
在 debug kernel 的時候, 要追 function call stack 最簡單的方式就是呼叫 dump_stack(). 在 user space 寫 C function 時, gcc 也提供了一個類似的 API. Read more 29 May 2023 - less than 1 minute read
因為 kerenl 的 tasklet 可以 access 任意的記憶體位置, 要如何在茫茫 tasklets 中找到是誰修改了某個變數在 debug 上非常重要. 還好 Linux kernel 提供了 HW breakpoint 的方式, 讓我們可以在要 monitor 的位置上註冊一個 trap. 當 kernel 對該位置讀寫時觸發 trap 來做進一步 debug, 比方說 dum... Read more 27 Mar 2023 - less than 1 minute read
最近處理一個掛在 __timer() 的 kernel crash, 發現 log 裡的一個有趣的地方. 看起來是可以透過開一些額外的 kenrel config 來印出更多訊息. Kernel BUG at __mod_timer+0x2c8/0x3d0 [verbose debug info unavailable] Read more 27 Mar 2023 - less than 1 minute read
工作上要維護的那份 driver 太亂, 常常搞不清楚一個 macro 到底有沒有被定義, 或是被定義成什麼值. 在 stack overflow 看到一個利用 gcc stringification 的方法, 在 compile log 裡直接印出 macro 值. Read more 30 Dec 2022 - less than 1 minute read