2010年7月20日 星期二

Xubuntu On MSI CX420

近日由於工作需要編譯 Android 環境, 原有的配有 Sempron Mobile 3800+ 筆電不敷使用
到了附近的賣場看了後, 決定了購入新的筆電 - MSI CX420
所俱備的性能與價格搭配看來是具有相當高性價比的機子

當然, 拿到手第一件事當然是想辦法安裝 Linux 環境
安裝本身並不是難事, 問題發生在安裝完成後

1. 安裝 ATI 驅動程式, 無論透過 Ubuntu 的啟動ATI專有驅動程式, 或是手動安裝ATI Driver, 安裝後重新開機都會是黑螢幕(Yap, 為此我重裝一次....).
這部份的線索是從 MSI CX420 驅動程式頁上對於 XP 需要設定 Primary Display為 PEG
是的 Linux 同 XP 不支援 SG(Switchable Graphics) 特性
需要刷新 BIOS 版本, 將 Primary Display 設為 PEG(PCI-Express Graphics)
刷新後, 原本黑濛濛的畫面就變得非常亮眼~ (無需重裝Linux, 刷新後就正常了)

2. Ralink 1T1R 802.11bgn 無線網路裝置無法驅動
從 Windows 上可以看到為 USB 裝置, 也可以看到所在的 Port & Hub 位置
於 Linux 上 lsusb 可以得到下列訊息:
Bus 002 Device 002: ID 8087:0020
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0db0:3870 Micro Star International
Bus 001 Device 002: ID 8087:0020
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

喔!? 竟然顯示微星 (lsusb -v 的 verbose mode 也只能看出是 Ralink裝置, 就省略了)
搜尋 device id 0db0:3870 可以看到 rt2800 的訊息
加上看到MSI官網上的驅動程式, 解開後閱讀 inf, 標明為 rt2870, 第一時間我就以為是Ralink RT2870
跑到 Ralink 的Linux驅動程式頁面下載RT2870USB 驅動程式
還自作聰明地將device id 加入來偵測, 結果是裝置驅動了, 然而無法scan ap 與連線
不能 work 的 driver 等於沒有, 於是回到了原點

接著想找社群的 open source 方案
由於 google 0DB0 3870第一時間會看到這個頁面
這表示 rt2800usb 還是與 CX420 上的裝置有關
頁面聯結的 rt2800usb.c 原始碼可以看到 裝置歸類於 RT2800USB_UNKNOWN
然而這檔案看來也不是最新的, 當然立刻看 git.kernel.org 上最新的 rt2800usb.c
ok, 這裝置在 rt2800usb driver 中被歸類為 RT2800USB_RT30XX
於是, 這時恍然大悟, 被搞錯的型號也呼之欲出
0x0db0:0x3870 的 Ralink USB 裝置應該為 RT3070
重新去網頁下載RT3070USB驅動程式, WIFI 速度非常!

到此終於解決了 Video 與 Wifi 兩大問題.
WebCam 後來測試是ok的, bluetooth 我沒在用也就無從測起了..^^

6 則留言:

匿名 提到...

請問一下RT3070下載後如何安裝呢?

網路黑貓 提到...

詳細步驟都在 README 檔案了

寧靜天堂 提到...

請問可以講解一下如何安裝嗎?
看不懂README...

網路黑貓 提到...

Hello 寧靜天堂:
過程大致上就是先安裝 buile-essential, linux-headers 之後, 解開該壓縮檔, 打 make 與 make install, 之後修改 /etc/modules 加入 rt3070usb

比較要注意的是, 安裝會需要 RT3070STA.dat(並沒有這個檔案) 而 Driver 需要 RT2870STA.dat 目錄訊息上透過dmesg 得知, 處理時要注意

由於並不是很好安裝, 如有問題請 email 給我

DerekChen 提到...

黑貓你好!!
我和你使用的筆電是同一台,關於無線的問題當初解決方法是找到下面這篇文章,
只要依上面的說明,在文字模字下,一一打上指令就可以正常驅動,不過我不了解為什麼要打這些指令,所以貼上來讓你研究看看。
(我灌的是ubuntu,每次重灌後,跟著打就可以使用)

Hello,
a little Trick to add the ID 1737:0078 for the WUSB100v2 to the System and simply use the rt2870sta V1.4.0.0. that comes with the system if the new driver v2.3.0.0 or the rt3070 from Ralink don't work properly.

First remove the new compiled driver if necessary:
Code:
----------------------------------------------------------
cd
cd RT2870_LinuxSTA_V2.3.0.0
sudo make uninstall
----------------------------------------------------------

If you previously did not manually compile the driver from Ralink start here.

Add the ID:
Code:
---------------------------------------------------------
echo 'install rt2870sta modprobe --ignore-install rt2870sta ; /bin/echo "0db0 3870" > /sys/bus/usb/drivers/rt2870/new_id' | sudo tee /etc/modprobe.d/rt2870sta.conf
sudo modprobe -rf rt2870sta
sudo modprobe rt2870sta
dmesg | egrep 'rt28|usb|Phy'
iwconfig
------------------------------------------------------------

The solution works? Ok, load the driver at startup
Code:
------------------------------------------------------------
echo rt2870sta | sudo tee -a /etc/modules
------------------------------------------------------------

alternativ automatic driver load when the stick was plugged in:
Code:
----------------------------------------------------------------
sudo gedit /etc/udev/rules.d/10-wusb100.rules
----------------------------------------------------------------

contents:
Code:
-----------------------------------------------------------------
# UDEV-Rule for wusb-100v2 ID 1737:0078
SUBSYSTEM=="usb", SYSFS{idVendor}=="1737", SYSFS{idProduct}=="0078", RUN+="/sbin/modprobe rt2870sta"
-----------------------------------------------------------------

make it ready to work
Code:
-----------------------------------------------------------------
sudo service udev reload
-----------------------------------------------------------------

網路黑貓 提到...


"The solution works? Ok, load the driver at startup"
做界線

這行以上的目的在於將 0db0 3870 這個 USB 裝置識別碼加入驅動程式偵測列表
(dmesg / iwconfig 是用來確認的, 並無實質用處)

以下的部份是讓驅動程式在開機時自動載入
他提供了兩個方法, 擇一即可

在 ARM 平台上使用 Function Multi-Versioning (FMV) - 以使用 Android NDK 為例

Function Multi-Versioning (FMV) 過往的 CPU 發展歷程中, x86 平台由於因應各種應用需求的提出, 而陸陸續續加入了不同的指令集, 此外也可能因為針對市場做等級區隔, 支援的數量與種類也不等. 在 Linux 平台上這些 CPU 資訊可以透過...