usb_modeswitch使用詳解_第1頁
usb_modeswitch使用詳解_第2頁
usb_modeswitch使用詳解_第3頁
usb_modeswitch使用詳解_第4頁
usb_modeswitch使用詳解_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、usb_modeswitch使用詳解(翻譯)一、介紹USB_ModeSwitch是一種模式切換工具,用于控制具有“多種模式”的USB設備。越來越多的USB設備(特別是高速WAN上網(wǎng)卡,它基于一些手機芯片,能夠改變它們的USB連接模式)都會板載它們自己的MS Windows驅(qū)動程序,當首次插入電腦時,它們會被識別為一個閃存設備,然后開始安裝存儲于其中的驅(qū)動程序。在安裝完驅(qū)動程序之后(后面還需要再插拔一次),驅(qū)動程序就會再內(nèi)部切換USB設備的連接模式,存儲設備會消失(大多數(shù)情況下),然后會出現(xiàn)一個新的設備(例如,一個USB調(diào)制解調(diào)器)。調(diào)制解調(diào)器制造商會“可選地”調(diào)用“ZeroCD (TM)”特性

2、,因為它會消除對用于承載一個獨立驅(qū)動程序載體的需求。起初,這方面的東西沒有任何形式的文檔記錄,而且也幾乎沒有任何Linux支持可用。從好的方面來看,大多數(shù)已知的設備在兩種模式下都可以工作,使用諸如“usb-storage”或“option”(一種經(jīng)過優(yōu)化的串行驅(qū)動程序,高速3G調(diào)制解調(diào)器的Linux標準)的Linux驅(qū)動程序。那么唯一的問題便是如何從存儲設備切換至調(diào)制解調(diào)器設備,或者其他應該做的事情。幸運的是,我們還有人類的理性、USB嗅探程序和“l(fā)ibusb”。MS Windows的驅(qū)動程序存在通信被竊聽的可能性,但是,在Linux或BSD變種系統(tǒng)的規(guī)則之下,可以隔離觸發(fā)模式切換的命令或動作

3、,并且可以復制相同的東西。在“l(fā)ibusb”的有力幫助之下,USB_ModeSwitch可以從一個配置文件中獲取重要的參數(shù),然后完成全部的初始化和通信工作,這樣便使得用戶可以輕松地處理這個過程。它主要是自動使用的 通過udev事件和規(guī)則 不需要任何用戶操作便能完成模式切換。但是它還可以作為一個命令行工具來運行,通常會在嘗試使用某種未知設備時使用這種方式。這個工具是大多數(shù)主流發(fā)型版的部件之一,你應當不用從源碼包進行編譯安裝,除非運行時遇到問題,或者想要使用最新的版本。你在提交任何問題之前,請首先仔細閱讀本頁面上的所有信息!如果你使用一個新的設備,那么它會幫助你理解這個工具內(nèi)部的工作原理,它也會反

4、過來更加輕松地找到相關的切換命令,并且可以添加一條新的配置條目。如果想要了解關于如何實現(xiàn)自己的USB嗅探,請查看下面的“貢獻”章節(jié)。二、下載重要:想要完成一次高效的安裝,你需要同時擁有程序和數(shù)據(jù)包!對配置文件的修改和更新的頻率可能會比發(fā)布新程序版本的頻率高得多,這些配置文件包含已知USB設備的大多數(shù)信息。這也是為什么會單獨提供這些配置文件。· 請下載 usb-modeswitch-2.2.1.tar.bz2 (http:/www.draisberghof.de/usb_modeswitch/usb-modeswitch-2.2.1.tar.bz2),源代碼的發(fā)布日

5、期為2015-01-15,Debian的軟件倉庫中很快也會有相應的Debian軟件包。它支持很多種架構(諸如amd64或ia64)。· 下載 usb-modeswitch-data (http:/www.draisberghof.de/usb_modeswitch/usb-modeswitch-data-20150115.tar.bz2)包(2015-01-15)。它包含設備數(shù)據(jù)庫和規(guī)則文件,包括完整的路徑。你需要2.2.0版本以上的程序,因為引入了新的參數(shù)。· 可選的 device_reference.txt (http:/www.

6、draisberghof.de/usb_modeswitch/device_reference.txt)文件(2013-11-13),它是較早設備的配置集合,分別由相應的貢獻者添加;如果你想要使用某個新設備,那么你也可以將這個文件作為首選資源。· 如果你的系統(tǒng)上沒有安裝 libusb-1.x(/),請不要忘記安裝這個軟件包。在大多數(shù)發(fā)行版本中,很可能有一個名為“l(fā)ibusb1-dev”或“l(fā)ibusb1-devel”的軟件包(或類似的)。較老的版本基于 libusb-0.1.12,但是自從2.0.0版本以來,只會支持libu

7、sb1.x。有一點復雜的是,libusb1有一段時間還有一個兼容分支,叫做“l(fā)ibusbx”。更多信息可閱讀:http:/www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?p=12912#p12912如果你有一個帶有USB主機端口的Android平板,并且Android版本至少為2.2,你可以嘗試使用“PPP Widget”(http:/www.draisberghof.de/android/pppwidget.html),可以從Google Play下載使用。它包括USB_ModeSwitch和PPPD,使得你能夠相對輕松地通過3G上網(wǎng)卡

8、或手機連上網(wǎng)絡,即使是在僅支持WiFi的設備上。如果你是一個系統(tǒng)集成者(包維護者),你可以使用這個XML文件來檢查新的版本:usb-modeswitch-versions.xml(http:/www.draisberghof.de/usb_modeswitch/usb-modeswitch-versions.xml)。USB_ModeSwitch的Debian軟件包的維護者已經(jīng)建立起一個PPA,提供大多數(shù)最近發(fā)布的版本,請查看論壇中的這個帖子:http:/www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?p=12609#p12609三、如何

9、安裝如果你已經(jīng)安裝了一個較早的版本,推薦卸載掉已安裝的版本(運行 make uninstall 命令)。1.1.0版本中修改了若干文件的位置,如果不管舊版本的話,那么舊版本的文件就可能會被孤立。如果你以前安裝的是1.1.0或更新的版本,那么你僅僅需要更新和覆蓋所有已有的文件。解壓縮程序的源碼文件(誰會想到!)。在新創(chuàng)建的目錄中,以root或超級用戶的身份運行以下命令:# make install這樣會安裝一個用于udev的小型shell腳本、較大的包裝器腳本、一個配置文件、man(使用說明)頁面,以及全新編譯的二進制文件。重要:如果你以這種方式安裝,那么你將需要“tcl”軟件包,用于處理大型的

10、分配器腳本。還有很多種不依賴于“tcl”軟件包的安裝方式。請參考包含在源碼包中的README文件,以便于了解更多的安裝選項吧!現(xiàn)在,請對數(shù)據(jù)包進行相同的操作。它將會在“/usr/share/usb_modeswitch”目錄中安裝配置文件,在“/lib/udev/rules.d”目錄中安裝udev規(guī)則文件。較早的“/etc/usb_modeswitch.d”目錄被用于保存自定義配置文件(新的或修改的)。你已經(jīng)設置成功了,如果你的設備是已知的,那么你應當能夠?qū)⑵洳迦氩⑹褂?。如果它不能立即使用,那么我們將會找出原因。想要手動使用,只需要安裝程序即可。在命令行界面中使用或者使用一個自定義的配置文件。

11、如果你想要創(chuàng)建自己的配置,那么“device_reference”文件(請參考“下載”章節(jié))會是一個很好的切入點。這個文件中有很多注釋,會告訴你如何進行操作。你的自定義配置文件可以用任何文件名,也可以放在任何地方;只需要用 -c 參數(shù)告訴 usb_modeswitch 如何找到這個配置文件即可。手動使用的主要目的是測試和分析。請參考下一章。四、如何使用在大多數(shù)情況下,你可以不用進行任何操作(除了將設備插入)就能夠使用你的設備。如果你認為你的設備是受支持的,但是設備并沒有按照預期正常工作,那么你可以首先打開日志,正如在“故障排查”章節(jié)中所述的。若想要測試、調(diào)試你的新設備,你可以在手動模

12、式下使用USB_ModeSwitch的二進制部分。有兩種方法:使用一個配置文件或使用命令行。運行“usb-modeswitch -h”命令,便可列出命令行參數(shù)。如果使用了除 -W、-D、-I 和 -q 之外的命令行參數(shù),那么通過 -c 命令行參數(shù)指定的配置文件就會被忽略,你必須在命令行上提供所有的必須參數(shù)。你還可以參考內(nèi)藏的使用手冊頁面。想要使用某個配置文件,你可以使用“/usr/share/usb_modeswitch”目錄中的小文件,或者自己創(chuàng)建一個文件。然后使用 -c 選項,為 usb_modeswitch 命令指定這個文件的文件名和路徑。你還可以在 device_r

13、eference.txt(http:/www.draisberghof.de/usb_modeswitch/device_reference.txt)文檔中找到一些關于型號系列的提示,以及命令行參數(shù)的解釋。重要:USB_ModeSwitch 就像使用 libusb 的所有程序那樣 當手動調(diào)用這個命令時,必須以 root 身份運行(或者使用“sudo”命令)。否則,會出現(xiàn)奇怪的錯誤消息,并且設備和程序不會正常工作。當試驗切換命令和策略時,可能在具有root權限的shell中進行操作會更加便利(“sudo bash”或“su -”)。自動化方法由若干種協(xié)同工作的組件構成,以用途的邏輯順序列出:&#

14、183; /lib/udev/rules.d/40-usb_modeswitch.rules  如果識別出一個已知的設備ID(制造商/產(chǎn)品),那么udev規(guī)則便會啟動包裝器。若想要為一個新的調(diào)制解調(diào)器添加一個觸發(fā)器(具有有效的配置文件),你可以新加一行,內(nèi)容為它的USB ID,就像在已有條目中看到的那樣。如果被切換的設備提供標準的串行端口,那么一個二級規(guī)則會再次調(diào)用包裝器,然后添加一條指向正確連接端口的符號鏈接(見下文)。· /lib/udev/usb_modeswitch  一個shell腳本,分叉至真實的包裝器腳本。從1.1.6版本以來,腳本是和在Ubuntu

15、中使用的“dash”shell完全兼容的,除此之外還兼容于較老的“bash”變種。為了將usb_modeswitch和udev進程分開運行,最近的版本會利用upstart或systemd特性。· /usr/sbin/usb_modeswitch_dispatcher  這樣會進行額外的設備檢查,然后使用二進制文件,根據(jù)選中的設備配置文件來切換設備狀態(tài)。如果在模式切換之后,沒有任何驅(qū)動程序來處理這個設備,那么分配器將會試圖加載和綁定“可選的”串行驅(qū)動程序,以便于使得設備可用。· /etc/usb_modeswitch.conf  當排查故障時,用于啟用擴展

16、日志的一個全局配置文件,或者用于禁用切換功能(主要是為了訪問設備的安裝部件)。· /usr/share/usb_modeswitch  一個包含每個設備個體設置信息文件的目錄,根據(jù)設備ID和可能更深入的身份標識來命名(為了解決已知的二義性)。如果你的設備ID在某個文件的文件名中出現(xiàn)了,那么表明你的設備是受支持的,即使它的型號或品牌并不匹配。· /etc/usb_modeswitch.d  一個存放自定義配置文件的目錄。你可以將新建的或修改的配置文件放在這兒,它們將會比 /usr/share/usb_modeswitch 目錄中的配置文件被優(yōu)先使

17、用。· /usr/sbin/usb_modeswitch  實現(xiàn)切換功能的二進制程序。它被設計為獨立于內(nèi)核或系統(tǒng)細節(jié),應當可以移植到非Linux平臺上,只要libusb可用即可。在模式切換和驅(qū)動程序加載之后,系統(tǒng)需要負責發(fā)現(xiàn)新的(主要是串行的)設備。當前的NetworkManager版本(或者它的ModemManager組件)通常非常適合于使用無線調(diào)制解調(diào)器。甚至一些已經(jīng)不再使用PPP接口的新型號也能夠被識別,并且能被無縫地整合。當試圖自動偵測USB調(diào)制解調(diào)器和使用它們時,使用較老版本的這些程序就很有可能發(fā)生問題。如果你堅持使用一個較老的系統(tǒng),那么請禁用NM和MM。你將能夠

18、順利使用wvdial、UMTSmon和若干種提供PPP用戶界面的工具(諸如kppp),雖然這些程序中的某些可能需要有一點基本知識。從1.1.2版本開始,如果設備提供標準的串行端口,usb_modeswitch將會添加一條指向使用中斷傳輸?shù)恼_端口的符號鏈接。這條鏈接的名稱為 /dev/gsmmodem,如果連接了多個設備,那么在名稱之后會緊跟一個編號。你可以在連接幫助程序(諸如wvdial)中使用這個名稱。注意,在很多情況下,你可能需要手動編輯配置文件。如果你設法得到一個新型的或支持很差的設備,并且想要以手動模式正確地進行切換,那么你可以自己添加一條udev規(guī)則和一個配置文件。但是也

19、請將其報告給我們,分享你的成果!請查看“貢獻”章節(jié)。五、已知的適用硬件非常重要的提示:就個人來說,我不可能測試絕大多數(shù)的受支持設備。此處的列表 除了必需的數(shù)據(jù)之外 還要依賴于第三方團體(或用戶)的報告。因此,即使你的設備在此列出,你也很有可能遇到一些問題。也就是說,這個小工具的用戶基數(shù)有著非??捎^的增加,因此任何數(shù)據(jù)相關的問題通常會很快地顯現(xiàn)出來。迄今為止,初始化切換進程有三種已知的方法:1. 向存儲設備發(fā)送一條很少使用或看起來怪異的標準存儲命令(相當于SCSI)(例如“eject”)。2. 向設備發(fā)送一條或多條制造商特定的控制消息。3. 主動地從設備中移除(斷開連接)存儲驅(qū)動程序(僅適用于某

20、些早期的設備)。再次,如果你沒有在列表中找到你設備的名稱,它仍然是可能受支持的。當然,最好能夠在配置文件目錄中找到你的設備的USB ID。請仔細地瀏覽最新的數(shù)據(jù)包(請參考“下載”章節(jié))。下面是受支持的設備列表,同時還有相應貢獻者的信息:device_reference.txt(http:/www.draisberghof.de/usb_modeswitch/device_reference.txt)。六、故障排查注意:如果在遵循本頁面的建議之后,你仍然需要技術支持,那么請使用論壇!電子郵箱智能用于投稿設備/配置文件 不能處理技術支持問題!已知的問題· 只有版本為2.6.27以及更新版

21、本內(nèi)核的自動串口驅(qū)動程序分配才能和針對3G優(yōu)化過的驅(qū)動程序協(xié)同工作。如果你的內(nèi)核版本較老,并且在模式切換之后,你的調(diào)制解調(diào)器沒有被任何驅(qū)動程序識別出來,那么就會使用通用的“usbserial”驅(qū)動程序作為一種備用方案。· 在版本為2.6.26至2.6.28的內(nèi)核中,處理ID為 19d2:2000 的設備時會遇到一些問題。這通常會影響到大多數(shù)的ZTE設備,并且會使得“usb-storage”驅(qū)動程序忽略這個ID。而這將會妨礙正確的初始化,可能會導致切換失敗。你沒有其他辦法,只能對內(nèi)核代碼進行少許修改,然后重新編譯你自己的內(nèi)核。請參考下面內(nèi)核相關的問題,以了解詳細的信息。針對于自動化系統(tǒng)

22、整合的調(diào)試,請在文本編輯器中將(以root身份或者使用su命令)/etc/usb_modeswitch.conf 文件中的以下行:EnableLogging=0修改為:EnableLogging=1這樣便使得你可以在 /var/log/usb_modeswitch_<device> 日志文件中看到非常詳細的設備熱插拔活動日志。如果你接下來確定你的設備具有合適的取值,并且你已經(jīng)遵循所有的提示(請參考“已知的適用硬件”章節(jié))進行操作,并且USB_ModeSwitch看起來每次運行時都在做一些事情,但是卻毫無效果,那么你就很有可能遇到系統(tǒng)相關的問題。首先懷疑的應當是已

23、有的用于調(diào)制解調(diào)器的系統(tǒng)規(guī)則,這些規(guī)則可能沒有正確地處理一些東西。如果你擁有的設備的未切換ID為 05c6:1000,那么它可能會在較老的系統(tǒng)中調(diào)用切換命令出錯。有四種不同類型的切換設備,它們都具有相同的ID;在大型的發(fā)行版中,在嘗試過四五次失敗之后,它們都會被看做是“可選”(制造商)的型號。甚至有些手機也具有這樣的ID,將這些手機連接至USB端口時,它們可能會被錯誤地處理。若想要解決這樣的問題,你可以嘗試從 “/lib/udev/rules.d”目錄中刪除相應的規(guī)則文件,這些文件中包含對“modem-modeswitch”命令的調(diào)用。除了USB ID之外,USB_ModeSwitc

24、h將會進行額外的檢查,并且會以正確的方式處理所有已知的不明確的設備。例如,它將會對ID為 05c6:1000 的未知設備置之不理。另一個眾所周知的設備ID是 19d2:2000。它可能會在一個已有的規(guī)則控制之下切換正常,但如果你的設備型號是新型的,這個設備的ID還尚未添加至“可選”模塊中,那么系統(tǒng)就不會為這個設備加載驅(qū)動程序。禁用運行“彈出”的規(guī)則,這個設備的ID將會由usb_modeswitch進行處理。內(nèi)核相關的問題在某些較新的內(nèi)核中,某些設備(上述的設備,有些是可選廠商,有些是華為的,有些是ZTE的)會在USB存儲設備的代碼中得到特殊處理,會立即啟用切換功能

25、。對于這些特殊的設備來說,你可能不再需要USB_ModeSwitch,從另一方面來說,你必須訪問你的設備的“CD-ROM”部件。另外,特殊處理沒有產(chǎn)生任何效果,而且被妨礙的USB_ModeSwitch后來又工作正常的情況也是存在的(ZTE設備產(chǎn)生錯誤“-2”時可能會出現(xiàn)這種情況)。當發(fā)生問題時,請查看你的內(nèi)核源碼的“drivers/usb/storage”目錄中的“unusual_devs.h”文件。如果你的默認設備ID(存儲部件的廠商和產(chǎn)品ID)可以在上述文件中找到,并且當運行USB_ModeSwitch時會出現(xiàn)錯誤消息,那么首先嘗試將“usb-storage”加入黑名單。如果這么做有用,那

26、么你應當考慮重新構建你的內(nèi)核,停用“unusual_devs.h”文件中的相應條目。唯一會發(fā)生的是,以后USB存儲會以默認的方式工作。我在Gentoo的俄語版維基中找到一條提示,這條提示完全按照我剛剛的建議進行操作,使用的設備為ZTE MF626。順便說一下,USB開發(fā)者之間一度達成共識,如果必要的步驟可以在“用戶空間”中完成,那么就會將所有未來的模式切換代碼獨立于內(nèi)核驅(qū)動程序之外。另一種能夠影響內(nèi)核行為的方法是“usb-storage”的“delay_use”參數(shù),這個參數(shù)會設置存儲設備插入系統(tǒng)到實際使用(可能會自動掛載)之間的延遲時間,以秒為單位。默認值為5,這個參數(shù)可能會影響某些條件下的

27、切換結果。若想要修改默認值,則在 /etc/modeprobe.conf 文件中添加以下內(nèi)容: options usb-storage delay_use=1 (or 10, or other)老系統(tǒng)(例如,CentOS 5 或 Xandros 6)如果你使用的系統(tǒng)比不是非常的新(內(nèi)核版本低于2.6.27),那么你可能偶爾會遇到“udev”版本之間的不兼容性,它是設備管理器。如果你沒有任何跡象表明usb_modeswitch正在做任何事情(沒有日志文件),那么請遵循以下步驟:· 檢查“/lib/udev/rules.d”目錄中,除了“40-usb_modeswitch.rules”文件之外,還有沒有其他文件。如果并非如此,那么請將文件移入“/etc/ud

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論