- dmesg |grep tty // 確認serial使用狀況
- setserial -g /dev/ttyS0
- getty
- minicom
2014年3月25日 星期二
2014年3月20日 星期四
Android Intel CedarTrail整合MTK MT7610U USB WiFi Dongle
- 看來這driver並非Kernel driver,可以直接丟到driver下並透由menuconfig選擇。
- 這driver是可以直接在Linux PC環境下編譯的。
2. 將driver放到Kernel底下
- 如果直接編譯driver,會出現沒有.config的設定。
- 也非Kernel driver所用的makefile,無法跟著Kernel一起編譯。
3. 修改Kernel底下的Android.mk,增加WiFi driver路徑描述
$(mk_kernel) oldnoconfig
$(mk_kernel) $(KERNEL_TARGET) $(if $(MOD_ENABLED),modules)
$(hide) $(ACP) -fp $(BUILT_KERNEL_TARGET) $@
$(if $(FIRMWARE_ENABLED),$(mk_kernel) ... ... ...
$(mk_kernel) -C XXXu
cp $(CURDIR)/kernel/XXXu/MODULE/os/linux/XXXu_sta.ko
$(KBUILD_OUTPUT)/drivers/net/
cp $(CURDIR)/kernel/XXXu/NETIF/os/linux/XXXu_sta_net.ko
$(KBUILD_OUTPUT)/drivers/net/
cp $(CURDIR)/kernel/XXXu/UTIL/os/linux/XXXu_sta_util.ko
$(KBUILD_OUTPUT)/drivers/net/
- 改完後,在Kernel編譯完後,會自動編譯WiFi driver。
- 編譯完後會將WiFi driver拷貝到output driver路徑下。
4. 將所有的drivers拷貝到Platform目錄下
5. 在Platform/Platform.mk修改mk檔,將driver及wpa_supplicant.conf包進image
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/XXXu_sta.ko:system/XXXu_sta.ko \
$(LOCAL_PATH)/XXXu_sta_util.ko:system/XXXu_sta_util.ko \
$(LOCAL_PATH)/XXXu_sta_net.ko:system/XXXu_sta_net.ko \
$(LOCAL_PATH)/XXXSTA.dat:system/XXXSTA.dat \
$(LOCAL_PATH)/wpa_supplicant.conf:data/wpa_supplicant.conf \
6. wpa_supplicant.conf寫法如下
update_config=1
ctrl_interface=DIR=/data/system/wpa_supplicant GROUP=wifi
eapol_version=1
ap_scan=1
fast_reauth=1
7. 在BoardConfig.mk修改WiFi設定如下
# This enables the wpa wireless driver
#BOARD_WPA_SUPPLICANT_DRIVER := NL80211
BOARD_WPA_SUPPLICANT_DRIVER := WEXT
#BOARD_WPA_SUPPLICANT_PRIVATE_LIB ?= private_lib_driver_cmd
WPA_SUPPLICANT_VERSION := VER_0_5_X
P.S. Driver是搭配WPA_SUPPLICANT VER_0_5_X版本
8. 在platform_defconfig設定相關所需要用到的config,如wext
9. 在init.rc載入driver module
insmod system/XXXu_sta_util.ko
insmod system/XXXu_sta.ko
insmod system/XXXu_sta_net.ko
mkdir /data/misc 01771 system misc
# give system access to wpa_supplicant.conf for backup and restore
mkdir /data/misc/wifi 0770 wifi wifi
mkdir /data/misc/wifi/sockets 0770 wifi wifi
mkdir /data/system 0771 system system
mkdir /data/system/wpa_supplicant 0771 wifi wifi
chmod 0771 /data/system/wpa_supplicant
chown wifi wifi /data/misc/wifi/wpa_supplicant.conf
chmod 0660 /data/misc/wifi/wpa_supplicant.conf
chown wifi wifi /data/wpa_supplicant.conf
chmod 0660 /data/wpa_supplicant.conf
10. 因為WiFi driver是走libhardware_legacy架構,wifi.c需要做對應修改
- 修正相關檔案路徑
- 因為已在init.rc載入driver,所以直接return 1
... ... ...
... ... ...
... ... ...
#ifdef WIFI_DRIVER_MODULE_PATH
... ... ...
... ... ...
... ... ...
#else
return 1;
#endif
}
- 已經定義了ctrl_interface=,所以code裡拿掉
... ... ...
... ... ...
... ... ...
if (!strcmp(config_file, SUPP_CONFIG_FILE)) {
property_get("wifi.interface", ifc, WIFI_TEST_INTERFACE);
} else {
strcpy(ifc, CONTROL_IFACE_PATH);
}
#if 0
if ((sptr = strstr(pbuf, "ctrl_interface="))) {
char *iptr = sptr + strlen("ctrl_interface=");
int ilen = 0;
int mlen = strlen(ifc);
int nwrite;
if (strncmp(ifc, iptr, mlen) != 0) {
LOGE("ctrl_interface != %s", ifc);
while (((ilen + (iptr - pbuf)) < nread) && (iptr[ilen] != '\n'))
ilen++;
mlen = ((ilen >= mlen) ? ilen : mlen) + 1;
memmove(iptr + mlen, iptr + ilen + 1, nread - (iptr + ilen + 1 - pbuf));
memset(iptr, '\n', mlen);
memcpy(iptr, ifc, strlen(ifc));
destfd = open(config_file, O_RDWR, 0660);
if (destfd < 0) {
LOGE("Cannot update \"%s\": %s", config_file, strerror(errno));
free(pbuf);
return -1;
}
write(destfd, pbuf, nread + mlen - ilen -1);
close(destfd);
}
}
#endif
free(pbuf);
return 0;
}
11. 利用dmesg、logcat、netcfg、wpa_supplicant及wpa_cli觀看並除錯
12. WiFi正常運作了
P.S. 如果在Android看不到WiFi選項,請做下面的步驟
- 在裝置的/system/etc/permissions中會列出裝置支援的設備
- 相關設備支援檔案放在本機的frameworks/base/data/etc
- 要支援WiFi,
放置到裝置/system/etc/permissions
2014年3月9日 星期日
Linux各版本使用心得
Ubuntu-
很方便的PC OS,純粹是習慣的問題,Unity介面真的是讓人找不到軟體,
搜尋軟體也會出現太多太雜的結果,切換視窗也沒那麼直覺,這真的是使用習慣問題
就像Windows一樣,Linux的使用介面也朝適合觸碰螢幕的方向演進
Xubuntu-
較Ubuntu輕量,介面類似Windows XP,有修改Menu的介面,很適合新手
就是預設的檔案總管搜尋上不像Ubuntu那麼直覺,且常常會有莫名其妙的報錯,不影響運作
lubuntu-
很輕量,在小筆電也跑的很順,但是介面與設定的功能太簡略,使用上就沒那麼方便
不過很適合資源少的小筆電
Kubuntu-
KDE介面,很華麗,而且有很多好用的軟體,尤其是照片管理軟體的功能超強,還可以直接在地圖上顯示拍攝照片的位置,但是KDE介面太過複雜,設定也太過繁複,讓人眼花撩亂,
個人還是喜歡簡單的介面,Kubuntu有很嚴重的問題,系統常常當機且鎖定後就回不來了,
實在沒時間去找問題點
Linux Mint:
Cinnamon-
這介面很像Windows XP,很適合新手使用,而且整個設定上很便利,尤其是軟體中心比Ubuntu更便利好用,只是ibus中文輸入法在某些情況選字的視窗會超出螢幕無法選字,gcin沒有問題,但有些情況輸入中文並不在輸入的窗格上,而是在另一輸入視窗
Xfce-
就如Cinnamon一樣好用,比較輕量,一樣有中文輸入法的問題,搜尋上比較沒那麼直覺,
Menu沒有設定介面可自訂
Fedora:
堅持用自由軟體的OS,網站將理念呈現的很清楚,但是因為已經習慣Debian系列了,所以用起來比較不習慣,不過是一個很重要的發行版本
openSUSE:
用openSUSE就是要用KDE,不知道那來的念頭,第一眼看到很美,整個介面很美,功能也很強大,KDE的軟體功能也很強大,不過真的太複雜,個人一直用不習慣,不過真的很美,習慣用KDE介面的話很合適使用
Arch Linux:
可以製造自己的Linux,不過用久了會發現都手動真的太累了
Debian:
很簡潔,沒有太多多餘的東西,不過發行版只用自由軟體,安裝時有些驅動沒有需手動安裝,有些設定也需要手動設定,提供新的Gnome介面,也提供傳統的Gnome Classic介面,有用Ubuntu的經驗後,來用Debian也不錯啦
來看看Linux發行版的排名 DistroWatch.com,網站上第一名是Linux Mint
一個可以讓你參考,如何選擇發行版的網站Linux Distribution Chooser
2014年3月8日 星期六
2014年3月5日 星期三
使用Virtual Machine Manager與KVM安裝Windows 7
但因為office與ie的關係又一定要執行
Windows 7~~~
Windows 7~~~
一切都是因為公司文件跟網路銀行與ATM都不能在Linux下用呀 ><
但Android開發又一定要Linux,又只配一台NB,又等級不高,搞死人呀!!!
換上KVM,雖然也是慢,
但是比virtualbox順多了
但是比virtualbox順多了
文字管理很麻煩,透過Virtual Machine Manager來管理方便多了
- 在軟體中心搜尋virt-manager安裝virt-manager (Virtual Machine Manager)
- 啟動後會自動安裝KVM套件
- 確認電腦是否可支援KVM
- 執行egrep -c '(vmx|svm)' /proc/cpuinfo
- 假設結果是0,代表doesn't support hardware virtualization。
- 假設結果大於等於1,表示有支援,記得確認BIOS是否有將這功能打開。
- 執行kvm-ok,確認是否能完整支援
- 接下來的操作就跟virtualbox很像,記得將virt type設為KVM
- 成功跑啟Windows 7囉
安裝Windows出現0x80300001錯誤
這是一個很瞎的錯誤
因為要安裝額外的driver將Windows光碟退出,放進driver光碟,
繼續安裝Windows時出現的錯誤 ><
只要將Windows安裝光碟放回去即可~~~
=.= 無言,這是叫誰猜得到呀 ... ...
因為要安裝額外的driver將Windows光碟退出,放進driver光碟,
繼續安裝Windows時出現的錯誤 ><
只要將Windows安裝光碟放回去即可~~~
=.= 無言,這是叫誰猜得到呀 ... ...
訂閱:
文章 (Atom)