1. 程式人生 > >使用xbmc/kodi作為dlna render裝置時,連線到某些wifi熱點/路由器上,不能被dlna control找到發現的問題——原因是WIFI模組深度優化後,從省電模式喚醒時,會丟失組播包

使用xbmc/kodi作為dlna render裝置時,連線到某些wifi熱點/路由器上,不能被dlna control找到發現的問題——原因是WIFI模組深度優化後,從省電模式喚醒時,會丟失組播包

測試環境及條件如下:
1)wifi熱點為我們工作環境用的普通路由器時,xbmc安裝在開發板上,作為dlna render裝置時,是可以被dlna control(為手機上的音樂apk,如魅族MX4 Pro自帶的音樂apk)發現的。
但是,當wifi熱點是採用tplink的TL-TR861 5200L無線路由器MIFI( http://www.tp-link.com.cn/product_290.html [ ^])或者用手機做wifi熱點時,則常常找不到xbmc/kodi,無法推送音樂給開發板上的xbmc。採用上述熱點,基本是非常偶爾的情況下能找到xbmc.
在開發板上用tcpdump抓包發現,開發板似乎只能抓到板子自身發出去的網路包,偶爾抓到兩個其它裝置發出的udp廣播包 (MBNS),大部分其它裝置發出的網路包抓不到。

所以,dlna推送時找不到開發板上的xbmc,應該是就沒有收到手機音樂apk發出的查詢dlna render的udp組播包

如果先啟動手機上的推送音樂的apk,然後再啟動開發板上的xbmc,此時是手機端是能夠發現開發板的xbmc並推送音樂給它的。原因是手機端能收到xbmc啟動上線時的notify組播包,然後主動詢問連線了開發板。

2)將xbmc作為dlna render,裝在其它平板上,同樣連結到tplink的TL-TR861 5200L無線路由器MIFI,與我們的開發板進行對比測試。

與其它平板對比發現,在其它平板上的xbmc是能夠被手機端發現的,而我們的開發板不能——主要表現為組播的丟包率比較高。

3)將xbmc與其它的dlna render的apk(採用了DLNA互動播放器)進行對比:xbmc與dlna互動播放器均安裝到我們的開發板上,且wifi連線到tplink的TL-TR861 5200L無線路由器MIFI:

對比可見:使用DLNA互動播放器(基於cling開發的dlna render apk),它在開發板子上能輕易被手機找到,原因是xbmc的dlna庫是採用platinum庫,DLNA互動播放器採用cling庫。DLNA互動播放器會以一定週期不停傳送ssdp的notify組播包,通知同一網路中其它裝置自己的存在,這樣,即使沒 有收到推送方的Search包,依舊可以通過notify包來讓自己被推送方發現。
而xbmc沒有周期性發送ssdp包。我們也不能採用上述方法,因為如果採用,則開發板將不能進入休眠,會比較耗電。同時,這樣的方法也會給網路環境帶來不影響,產生大量的垃圾包。

後與wifi模組廠商聯絡,發現最終原因:

我們開發板採用的wifi模組是經過深度優化的,連線到tplink的TL-TR861 5200L無線路由器MIFI上時,與連線到工作環境下的普通路由器相比,測試時,前者——TL-TR861 5200L無線路由器比較閒,只有推送裝置的手機與開發板連線其上,開發板的wifi模組會進入到一個省電模式,當wifi模組被喚醒,退出省電模式時,會丟失幾十到幾百個組播包(單播不丟失),所以導致開發板收不到推送裝置上線的組播search包。而後者——工作環境下的普通路由器因為有很多裝置連線其上,比較繁忙,開發板的wifi不能進入到一個省電模式,一直工作在正常模式下,所以不會丟失組播包

至於xbmc作為dlna render被裝到其它平板上,能被推送裝置發現,是因為其它平板的wifi模組沒有做此深度優化。

相關推薦

使用xbmc/kodi作為dlna render裝置連線某些wifi熱點/路由器不能dlna control找到發現的問題——原因WIFI模組深度優化模式喚醒丟失

測試環境及條件如下: 1)wifi熱點為我們工作環境用的普通路由器時,xbmc安裝在開發板上,作為dlna render裝置時,是可以被dlna control(為手機上的音樂apk,如魅族MX4 Pro自帶的音樂apk)發現的。 但是,當wifi熱點是採用tplink的T

經過linux主機發送失敗

環境:有三臺機器,A,B,C組播包傳送方向A--->B--->CB上運營了pimd程式,通過ip mroute可以得到組播路由,但是資料包沒有進行轉發。通過抓包分析,組播包的TTL 為1,資料包在核心中已經丟棄。修改ttl值即可。

筆記本外接顯示器顯示器頻繁進入模式(save mode)

1,首先看看設定的睡眠時間,比如你如果設定為1分鐘,那肯定容易睡眠。(我設定的不睡眠,但還是頻繁進入省電模式) 2,轉接線沒插緊導致的。我的就是這個問題,轉接線那裡有點鬆,導致顯示器頻繁識別不到訊號,識別不到訊號就會進入省電模式。我重新把轉接線插緊,就解決這個

解決JSON Lib, XML轉JSON字串不要namespace以及當xml中有Type屬性轉換成json丟失問題

XMLSerializer xmlSerializer = new XMLSerializer(); JSON json = xmlSerializer.read(xml); return json.toString(3); 以上程式碼在xmll轉成json字串後,

嘗試加載 Oracle 客戶端庫引發 BadImageFormatException。如果在安裝 32 位 Oracle 客戶端件的情況下以 64 位模式運行將出現此問題

orm 項目 inf article res info csdn 題解 cep 解決辦法: 原因:VS2013生成的網站,裏面有個地方調用32位的DLL文件,放到64位的服務器上提示錯誤“System.BadImageFormatException: 試圖

【eclipse jar】在編寫java程式碼為方便程式設計常常引用別人已經實現的方法通常封裝成jar我們在編寫只需引入到Eclipse中即可。

Eclipse中匯入外部jar包 在編寫java程式碼時,為方便程式設計,常常會引用別人已經實現的方法,通常會封裝成jar包,我們在編寫時,只需引入到Eclipse中即可。 工具/原料 Eclipse

如何解決 Windows 7 中安裝印表機驅動程式出現錯誤資訊"不到指定模組"或"XXX.dll 檔案丟失"

文章簡介 在Windows7中安裝驅動程式時,出現錯誤資訊“找不到指定模組”或“XXX.dll 檔案丟失”,您可以參考本文的步驟嘗試解決問題 應用軟體執行時一般都是優先從自己的安裝目錄中呼叫所需的模組(.dll)檔案,如沒有所需檔案再到 Windows\System

建立Thread物件當Runnable的run撞Thread的run讓步?

問題原型 文章題目說的有些文藝,所提的問題就是,執行如下程式碼,輸出的結果是什麼?(PS:不要懷疑問題,我保證如下程式碼沒有任何語法錯誤)。 new Thread(new Runnable() { @Override public void run() {

圖說單廣播和地域

ecif nic 技術分享 packet add ast software protoc cti 在計算機網絡之路由選擇中,單播(unicast),組播(multicast)和廣播(broadcast)可謂家喻戶曉,婦孺皆知。但其實播(cast)有5種,列舉如下: Rou

廣播

個性 結構 數據 帶寬 能夠 時間 技術 網絡設備 都是 http://blog.csdn.net/cosmoslife/article/details/7616797 當前的網絡中有三種通訊模式:單播、廣播、組播(多播),其中的組播出現時間最晚但同時具備單播和廣播的優點,

(多)廣播以及任

pac 視頻 rsvp 使用 blank 缺點 ron ssa 處理 目錄 [+] 單播(unicast): 是指封包在計算機網絡的傳輸中,目的地址為單一目標的一種傳輸方式。它是現今網絡應用最為廣泛,通常所使用的網絡協議或服務大多采用單播傳輸,例如一切基於TCP的協議

jqgrid 選中行觸發編輯切換下一行驗證和異步保存一行數據

page mes dex 不想 ima mage index 行數據 sub 有時,我們需要批量修改或填寫一些相似的數據。可以以jqgrid表來顯示,可能的效果如下: 選中觸發行編輯參考:jqgrid 單擊行啟用行編輯,切換行保存原編輯行 本文主要說說驗證和異步保存

thinkphp5.0 編輯界面驗證不合法重定向到編輯界面給編輯界面重新分配數據

規則 names 得到 還記得 輸入 分配 優先級 rule 獲取 首先,看一看 錯誤場景: 比如說我們有這樣一個編輯界面: 而我們有這樣一些驗證方法(註:采用的是thinkphp5.0的驗證規則) namespace app\admin\validate; use th

安裝兩個版本的python安裝安裝的python程序打開閃退

bsp 卸載 雙擊 python的安裝 環境變量 系統默認 電腦 3.6 路徑 1.環境變量的問題 (Win7)右鍵打開“計算機”的屬性設置→高級系統設置→環境變量。 在系統變量中的path中,編輯,在末尾加入Python的安裝路徑“F:\Python27”, 路徑與

Web傳輸前臺的參數數據量過大[json格式的字符串],可能達到幾M,ajax調用後臺方法

reads time size 大小 direct red pre 傳值 調用 eb傳輸,前臺的參數數據量過大【json格式的字符串】,可能達到幾M,ajax調用後臺方法時,無法傳遞問題分析:tomcat上默認post提交大小為2M,左右,超過這個大小了,就會傳值不成功解決

Springboot多模組啟動總是不到子模組的bean

Springboot多模組啟動時,總是找不到子模組的bean,這是因為啟動Applicaiton 中總是預設掃描當前專案的目錄,而不會去掃描子專案的bean,所以這裡找不到。 一個解決思路是,在啟動Application 上註明要去掃描哪些。 比如子專案是:com.base 當前專案是:

web工程啟動在一個類中延遲載入Bean因為該Bean類可能還沒JVM載入

   問題描述: (1)javaWeb專案啟動中,還沒啟動完成,在下面這個類載入另一個Bean類, (2)通過getBean方法獲取到該Bean,可以獲取到,不為null (3)但是,呼叫該Bean的方法insertSelective()方法,進不去該方法   &nb

Linux使用yum命令安裝軟體連線不了網路報錯:ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"

錯誤: 解決方案: 在/etc/sysconfig/network-scripts/ifcfg-eth0檔案中配置DNS資訊: vim /etc/sysconfig/network-scripts/ifcfg-eth0 # 進入檔案編輯 修改(新增DNS): DNS1=8.8.

使用SpringMVC的crud操作進行資料修改但是修改成功頁面無法顯示lastName屬性值(修改的那條記錄)

我這個錯誤的原因在於,把map的鍵寫錯了,它必須和類名第一個字母小寫相同 @ModelAttribute public void getEmployee(@RequestParam(value="id",required=false) Integer id, Map&l

嵌入式linux網路程式設計廣播

文章目錄 1,廣播 1.1,廣播收發 1.2,廣播收發---示例 1.2.1,net.h 1.2.2,sender.c 1.2.3,receiver.c 1.2.4,執行結果