環(huán)境是什么呢?debian 10也就是最新的debian 穩(wěn)定版本。首先呢,這是一個臺式機(jī),臺式機(jī)上不自帶藍(lán)牙設(shè)備,需要到網(wǎng)上購買一個藍(lán)牙棒。這個藍(lán)牙榜我買回來以后,就插上電腦,結(jié)果發(fā)現(xiàn)操作系統(tǒng)居然不識別這個藍(lán)牙棒。唉,心里面有1萬個cnm奔騰而過。然后去Google搜索,找到了原因。主要就是因為這個藍(lán)牙棒用的是CSR的芯片,然后啊,這個芯片呢,在linux發(fā)現(xiàn)他的時候做一些握手會有一個東西不支持,然后操作系統(tǒng)就會直接判定此藍(lán)牙設(shè)備不可用。其實啊,這是一個老問題了,然后在linux內(nèi)核這個bug系統(tǒng)中,2014年大概就出現(xiàn)過。問題是什么呢?唉,其實啊,還是硬件這個設(shè)備沒做好,就是做了一個功能,但是呢,不完全的遵守藍(lán)牙的這個交互的規(guī)范。然后這個Linux內(nèi)核驅(qū)動呢會按照這個藍(lán)牙的這個規(guī)范啊,去識別外設(shè),和它握手,結(jié)果呢就會發(fā)現(xiàn),哎你不符合規(guī)范,對不起,我不能用。不過不符合規(guī)范的問題,只是一個很小很小的問題,舉個例子,規(guī)范可能有100條,我99條都符合你規(guī)范,只有那一點我沒做好,就和你的規(guī)范有些出入,結(jié)果呢內(nèi)核的這個檢查比較嚴(yán)格,因為這一點跟這個規(guī)范不符合,就判定是壞的就不讓用。當(dāng)時的解決方案是什么?繞。也就是說啊,這種CSR的藍(lán)牙棒太多了,你的市場占有量這么大,我沒法解決你這個問題,我就做個標(biāo)記,好發(fā)現(xiàn)你有這個問題,我就把這個東西繞過去讓你正常工作,因為剛才說了,99%的情況下都是可以正常工作的,1%的情況你不符合規(guī)范,可能平常也用不著,所以那就讓你用好了。可是歲月在變化,內(nèi)核在發(fā)展,藍(lán)牙棒也在更新。2019年的時候突然發(fā)現(xiàn)內(nèi)核又出現(xiàn)了這個問題,有些不兼容的藍(lán)牙沒法識別出來了。然后這個bug在系統(tǒng)中就被標(biāo)記為重新打開,2019年重新打開的。到現(xiàn)在是2020年3月1號,這個bug還沒有得到解決。但是也有好消息了,也就是說,有內(nèi)核開發(fā)者已經(jīng)上傳了可以測試的補(bǔ)丁。去年10月份也就是2019年10月份的時候,我嘗試用那個補(bǔ)丁,在debian 10系統(tǒng)中直接打他當(dāng)時的內(nèi)核。結(jié)果發(fā)現(xiàn)補(bǔ)丁根本不兼容,沒法打,要需要改的工作比較多啊,因此就是一聲嘆息,買了個藍(lán)牙棒呀,在自己的電腦上居然用不起來,可是還不能說人家賣家的什么問題,因為啊我按我猜想在windows上和麥克電腦上用起來肯定是杠杠的,沒問題。心里就一直有小小的不甘啊,唉,怎么會這樣呢?但是總會想起來,總想去折騰這么一把。這不趁著疫情期間在家里閑著沒事兒,終于逮到機(jī)會,發(fā)現(xiàn)補(bǔ)丁也更新了,然后我發(fā)現(xiàn)在debian系統(tǒng)中還有那個backports可以去下載最新的那個內(nèi)核源代碼,也就是5.4版本的內(nèi)核源代碼,這樣編譯之前,那個補(bǔ)丁打起來還是比較容易的。打完補(bǔ)丁,編譯了好幾個小時(啥也別說了,電腦看來是該升級了,編一個內(nèi)核就花好幾個小時),然后一折騰,重啟了好幾把電腦,把那個模塊加載的參數(shù)也改了,結(jié)果終于藍(lán)牙棒可以用啦,此處應(yīng)該有掌聲和鮮花。
不過這個藍(lán)牙設(shè)備可以用還是第1步,我需要的是和蘋果的airpods配對,能聽能說。桌面系統(tǒng)的這個藍(lán)牙配置呀,這些天好像還給我搞得有點不太對,嗯,也折騰了半天,終于把它搞出來了,把那個系統(tǒng)設(shè)置打開了,就把藍(lán)牙的那個界面打開,去發(fā)現(xiàn)airpods,然后發(fā)現(xiàn)了了嗎?發(fā)現(xiàn)了。發(fā)現(xiàn)了之后和它連接,然后在那個聲音輸出的和輸入的這個配置中,找到了這個airpods,可以把它設(shè)為默認(rèn)輸出設(shè)備。設(shè)置過去呢,有一個默認(rèn)模式,嗯,這個模式是A2DP,是一個Linux的一個聲音的驅(qū)動模式,然后居然可以聽!但是效果不太好,就是頓頓的,聲音不大,另外一個問題就是不支持麥克輸入。其實呢,還有另外一個模式,在設(shè)置界面上可以設(shè)置的叫headset 模式,也就是hsp模式,還有一個是hands Free模式,也就是hfp模式。在設(shè)置界面中,hsp和hfp這兩種模式是一種,就是除了A2DP這個模式之外,那么還可以選擇這種。因為效果不好,所以我就想試用這種模式,結(jié)果發(fā)現(xiàn)我選了這種模式之后,你當(dāng)時界面上選的是這種模式,但是我把設(shè)置界面切到另外一個選項再切回這個語音的輸入輸出時我看到的是,又返回到A2DP模式了。所以這個模式是不可以被設(shè)置的。于是藍(lán)牙棒的問題剛剛解決,又碰到了新的問題,雖然那個耳機(jī)的聲音可以被聽見,但是效果真是不盡如人意,又遇到了這么個模式問題,只好再次去查找。現(xiàn)在這個問題還沒有解決呢,嗯,但是呢,我知道大概在什么方向,是一個linux系統(tǒng)的開源軟件里面有個叫pulseaudio這個模塊,然后它的藍(lán)牙插件和hfp這種模式的兼容性本身是不盡如人意的,好像有個其他的(不是AirPods)耳機(jī)有可以在hfp模式下支持的比較好,而airpods有不少用戶報告都有兼容性問題。反正這個事情就是說還是在發(fā)展。
好了,故事講完了,也許以后還有續(xù)集,但是我想說的是,折騰這玩意兒挺好玩的,這個東西啊總是不完美,就是軟件總是不完美,然后開源軟件呢,對這個消費品的支持總是正在進(jìn)行中,所以常常需要用戶自己折騰,才有可能得到一個好的結(jié)果(也有可能折騰不出啥結(jié)果,也有可能折騰出一個半吊的結(jié)果,像這次)。但是折騰這玩意的過程就是一個享受的過程,因為你要解決問題,首先呢,你得去Google搜索,你就得用正確的關(guān)鍵字去搜索,你第1次搜索不對,還得換關(guān)鍵詞去搜索,多搜幾次,你終于找到一個相關(guān)的頁面,然后找到了發(fā)現(xiàn)其實人家也是在進(jìn)行中,于是你還要去做一些測試,自己完成這個測試。在整個折騰的過程中,你的知識更新了,你的技能成長了。有人說是自虐嘛,也也是一種可能吧,但是挺開心的,所以寫篇文章分享給大家。