最近參與了一個無線網卡撥號上網的項目, 收獲頗多。
對市面上的無線網卡一般都要在客戶端安裝對應的網卡驅動,所以一旦換一款網卡就要安裝一款對應的網卡驅動。然后對于一臺路由器設備而言安裝一個無線網卡驅動那就是不好辦的事了,所以市面上的路由器一般都有表明它只支持哪幾款無線網卡上網,這是在開發路由器時把這些無線網卡驅動給裝好。
而linux系統是自帶大部分的無線網卡驅動,也就是說Linux本身支持大部分無線網卡驅動。所以如果路由器使用的操作系統是Linux,那對于一款3G網卡撥號上網的modem,我們就只用像在linux下配置好的撥號配置就行了。 唯一比較麻煩的事,我們需要去嘗試哪個tty設備是你插上去的usb modem產生的。當我們把一款usb無線網卡插在路由器的USB口上時,linux會產生usb tty設備文件(control tty, data tty),我們需要在配置中需要逐個嘗試,匹配上了剩下的就是撥號腳本的事,4G無線網卡也同理。
實現的大概思路:一個線程監聽usb modem的熱插拔,一旦插上或拔掉usb modem, linux內核就會發出kevent, 捕獲該event, 將它放入一個處理隊列中。另一個線程對隊列中的事件進行處理。處理就是上述逐個匹配對應的tty設備,匹配上了之后就是三層撥號的工作的,選擇的是PPP撥號還是direct-ip撥號,這些都可以用shell 腳本來實現。
新聞熱點
疑難解答