現在大家的電子設備基本上都使用了Wi-Fi 、藍牙,無線裝置也越來越流行,再也不用面對雜亂無章的線纜,這似乎是一件好事,但無線也帶來了一個又一個的問題,本文作者分析了無線存在的各種問題,說明最後他為什麼「叛變」回有線陣營:對WiFi、藍牙和相關協議了解得越多,他就越相信,無線往往比有線更糟糕。
原文來自:Wireless is a trap
我曾經是一個反對各種線纜的鬥士。我討厭雜亂無章的電線,而且我還有不自覺地咬耳機線的壞習慣。但當我遇到一個又一個無線帶來的棘手錯誤時,尤其是在這段遠端工作期間,我的觀念改變了,對WiFi、藍牙和相關協議了解得越多,我就越相信,無線往往比有線更糟糕。
舉個例子:大多數人,當他們的視訊通話出現卡頓時,都會怪他們的網路服務提供商。這是可以理解的,因為大多數網路服務提供商都是價格過高的寡頭壟斷者,他們的軟體很難用,客戶服務也很糟糕。然而,當我每次我幫助別人搞清楚他們的網路連接問題的源頭,罪魁禍首往往都是他們的WiFi。而通常情況下,最簡單的解決方法就是接根網線。
WiFi(還有藍牙等)透過讓你覺得「它就是好用」來騙你。但如果你調查一下,你往往會發現,無線是在降級的狀態下運行的,就像CPU的降頻,其性能比同等的有線連結差很多。由於這種降級是悄無聲息發生的,所以看上去往往不是無線的問題,相反,你很可能會得出結論,是你的設備/軟體/自己的問題。
我一次又一次地看到人們解決一些與無線相關的問題,然後說:「哇,我不知道這能好多少!」
最近,我終於怒氣沖沖地把辦公桌上的所有無線設備都換成了有線設備。雖然我不得不在線纜管理上投入一些資金(並努力克服我咀嚼耳機線的習慣),但我能夠達到和無線幾乎同樣的整潔程度,而且可靠性、品質和速度都要好得多。我再也不用擔心我的設備無法配對、電池耗盡,或者在直播演講時出現卡頓,大大降低了設備帶來的痛苦。
為了說明我所說的痛苦程度,下面我將介紹我在處理無線協議上遇到的一些微妙的、難以察覺的但卻很嚴重的問題。
WiFi有什麼問題?
第一個問題就是干擾。
如果多個無線網路在同一個「頻道」(無線電頻段)上運行,它們的傳輸可能會相互干擾。當這種情況發生時,你的設備需要重新發送相同的訊息,這將使你的WiFi速度變慢。
你可能認為這可以透過讓路由器自動找出最不容易受到干擾的頻段來解決,但很多路由器似乎在這方面做的相當糟糕。(另外,舊的2.4GHz WiFi協議只允許使用三個不重疊的頻道)。
這意味著在密集的地區(如公寓樓),路由器經常會選擇一個不好的頻道,最後互相干擾。如果你的路由器或設備遇到干擾,它沒有辦法通知你,所以只有當你知道你的路由器「應該」有多快,並注意到它比較慢時,你才會知道。
第二個問題是死角。
如果你離路由器太遠,你的電腦可能無法穩定地接收到路由器發送的訊號。多遠是「太遠」也受到很多因素的影響,包括牆壁或天花板。除非你很了解無線電波如何與建築材料相互作用,否則很難預測你的死角在哪裡。
最糟糕的是,許多死角並不是完全死的:你的電腦和路由器會在放棄之前多次嘗試重傳每個封包,而且往往最終會通過。如果這就是你遇到的情況,這就不是死角,這是一個「慢區」,這裡能連上網,但非常不穩定。
當然,除非你密切關注你的網路性能統計,以及它們與你的空間位置的關係,否則你永遠不會注意到一個慢區。如果你注意到了什麼,那就是有時你的網路會隨機地比其他時候更糟糕。
再來的問題是輪詢(Polling)。
電腦上的任何程式都可以要求你的無線網卡列出附近的網路。這將導致它進入「輪詢模式」,在這種模式下,它花費較少的時間傳輸數據,而更多的時間接收路由器廣播他們的網路訊息(路由器不能在同一時間傳輸和接收)。因此,它會導致突然爆發的網路延遲,例如,會導致你的視訊通話卡頓或停止幾秒鐘。
大多數程式設計師沒有意識到無線網路輪詢會影響網路性能,所以他們要求作業系統瘋狂地進行輪詢。我已經被這種情況折磨過很多次了。
最惡劣的例子,是當我注意到我的視訊通話有時卡頓有著奇怪的規律頻率。下面是我追查罪魁禍首的曲折過程:
-
我每隔一秒就給Ping的路由器一次,持續大約10分鐘,然後把輸出結果用Excel繪製出來,確認慢速ping的間隔正好是30秒。這讓我猜測可能是軟體問題。
-
我在Facebook上求助,有人推薦啟用macOS無線調試日誌。
-
我啟用了調試日誌,並注意到幾個應用程式,當我打開它們時,程序會請求網路掃描,有時與增加的ping延遲相關。
-
把範圍縮小到這幾個應用程式後,我在AskDifferent(蘋果相關的問答社群)上詢問如何阻止這些軟體這樣做。
-
在AskDifferent上有人將問題追踪到Qt上,Qt是一個製作使用者介面的軟體框架,被數百萬使用者的應用程式所使用。
Qt包含了一個組件,它每隔30秒就會對網路進行一次輪詢,每30秒就會導致幾乎所有使用網路的Qt應用降低你的WiFi性能。
已經有多個關於這個問題的bug報告,其中一個被工程師標記為「已解決」,因為他們允許使用者使用一個環境變量來禁用輪詢。
當然,這是一個沒啥用的「解決方案」,因為大多數使用者不會意識到他們的WiFi降級了;意識到的使用者也不會意識到這是Qt的錯;哪怕你找到了問題所在,仍然很難在Google上找到合適的修復方法(更不用說實現它了,除非你會程式編輯)。
這種行為是如此的對使用者不友好,而「解決方案」又是如此的可笑,似乎很可能是Qt的開發者們沒有意識到問題的嚴重性,我猜它毀掉了大約一百萬人的視訊通話體驗,因為,它影響了已經被下載了7500萬次的qBittorrent。這一百萬人中的大多數人可能還沒有足夠的技術來弄清楚如何「將QT_BEARER_POLL_TIMEOUT環境變量設置為-1」。(幸運的是,在2017年,在最初的bug報告三年後,他們終於意識到他們應該停止輪詢並以正確的方式修復bug)。
Qt是最嚴重的問題,但它不是唯一的問題。即使是macOS也有一個bug,當你打開Spotlight時,同樣的事情也會發生(我經常在視訊通話時這樣做,如果有人讓我看一個特定的文件,或者如果我想去在視訊通話的時候去開個網頁)。我不得不透過禁用Spotlight結果類型來解決這個問題,直到我發現是哪一個類型導致了這個問題。所以看來連蘋果自己的開發者都沒有意識到WiFi輪詢是一種危害。
藍牙音訊
最大的問題是高延遲。
大多數藍牙耳機都有150-300ms的延遲(我的電腦從網路接收音訊到耳機發出聲音之間的時間)。這意味著,如果我和紐約的朋友聊天,音訊數據從他們到我的電腦需要50ms,而從我的電腦到我的耳朵需要200ms-4倍的時間。由於高延遲破壞了談話的自然流程,我希望盡可能地消除延遲。
如果藍牙耳機支援正確的「編解碼器」,比如「AptX低延遲」,就有可能實現低延遲的藍牙耳機。當然,除了理論上支援編解碼器外,它們還得同意你的電腦使用它,這有時會失敗(檢查正在使用的編解碼器的選項埋藏在各種隱藏的選單和設置中)。
低品質。與編解碼器問題有關,許多藍牙設備在關閉麥克風時,會播放高品質的音訊,但在打開麥克風時,就會降格為低品質得多的音訊。如果你有一個藍牙耳機,你可以自己測試一下:用它播放音樂,然後打開你的麥克風設置到顯示麥克風輸入音量的頁面。你可能會聽到音訊被切斷一秒鐘,然後以較低的品質返回。即使是你可能期望的高階設備也會發生這種情況,比如我的Airpods Pro + 2018年的Macbook Air)。
藍牙的其他問題
藍牙bug。儘管現在幾乎所有的電腦都內建了藍牙,但許多藍牙配件還附帶了使用不同協議的專有適配器。(例如Jabra耳機、這款耳機麥克風。)這些適配器顯然使用了不同形式的無線傳輸,因為藍牙耗電量大,增加了延遲,而且可靠性較低。
例如,在我的Mac的內建藍牙上,我的滑鼠(羅技MX Master)顯示出明顯的卡頓,跳動,而不是平滑移動。我在三台不同的Mac上都遇到過這種情況,所以這似乎很可能是一個軟體問題。當我切換到使用羅技的適配器時,卡頓就消失了。
同樣,當連接到Mac 藍牙時,我的Jabra Evolve 75 耳機會經常出現麥克風或聲音音量降低的情況。它(大多數情況下)在自己的適配器上工作正常。
我不知道該把這些問題歸咎於Jabra/Logitech還是蘋果(或藍牙標準機構)。但無論如何,當設備製造商放棄藍牙,轉而使用其他需要每個設備配備一個適配器的協議時,我們知道藍牙已經失敗了。
藍牙最初的目標是將不同的無線設備統一在一個無線電和協議中,就像哈拉爾藍牙王(藍牙這個名稱的來源)統一丹麥,終結海盜時代一樣。然而在現實中,我最近不得不買了一個USB集線器,只為我的鍵盤、滑鼠、耳機和麥克風的適配器。
可靠性。即使是專有適配器,無線設備的可靠性也遠不如有線設備。例如,我在上文中寫道,我的羅技MX Master在切換到專有適配器後工作正常,但這並不完全正確:它工作了一段時間,然後有一天,它又開始無緣無故地卡頓。那一天,我終於下定決心,扔掉了桌子上的無線設備。
我遇到的其他藍牙bug,需要我每週取消配對和重新配對幾次。例如,我的AirPods有時會「不同步」,這樣一個耳機比另一個提前幾毫秒播放音訊,造成一種奇怪和非常令人不愉快的迴聲效果。
干擾。可靠性差的一個可能原因是藍牙和2.4GHz WiFi會相互干擾。就像WiFi的干擾一樣,如果你的設備遇到干擾,永遠不會得到設備的警告;你只會感受到突然的卡頓。
充電。這不是藍牙本身的錯,但使用太多無線設備的一個缺點是,它真的很煩人,要記住讓設備全部充電。我往往在關鍵的時候沒電了,例如在視訊通話時。
結論
這些問題大多有幾個共同點。
- 不是完全不能用,而是體驗不好。這意味著我沒有立即注意到問題的存在。
- 更加複雜的是,我不知道這個設備「應該」如何工作,所以我花了很長時間才注意到它處於降級的狀態。
- 即使我意識到了問題,也很難或不可能解決它,因為我不知道正確的方法(或者解決方法不存在)。
我希望我的設備是可預測的,具有一致的性能。無線協議本質上更複雜(因為許多設備共享同一網路空間),並且有更多不同的出問題的方式,所以它們比有線更難預測。對我來說,無線帶來的便利性往往不值得付出這種代價。
我還是會在明顯值得的情況下使用無線設備,例如,我的筆記型電腦用WiFi,因為需要拿著它到處走,我的手機用無線充電器,因為我並不追求充電速度。但對於嚴肅的工作來說,我會花時間去擺弄電纜佈線,給所有東西接上線。
這讓我想知道,如果我們把目前花在無線上的10%的精力,投入到巧妙的有線解決方案上,世界會是什麼樣子。我敢打賭,很多依賴無線的活動,比如視訊通話、遊戲等,會變得更加愉快。
- 資料來源:Wireless is a trap
- 本文授權轉載自36Kr
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!