網頁

2005年12月26日 星期一

IBM Thinkpad上的 bluetooth

我的小黑是學校賣的專案機,型號是 1866-6sv 。今年的 DM 上特別有個項目寫到「所有專案機種皆不含藍芽以及指紋辨識」,害我當時實在很猶豫。後來在種種原因之下狠下心敗下手,卻在交機的時候格外的高興。因為其他的專案機種都做了某些程度上的縮減,但是 1866-6sv 可能試價格太高所以沒人買還是怎樣的,所以才只有五台。於是交貨的機器就變成市售的 1866-6sv ,加上補助瞬間賺了差不多 15k 有。(其實,會猶豫的原因是因為沒有 X41 而且聽說 X60 搞不好快上了。可是在用了一年的筆電後,實在不能忍受沒小黑的日子啊。)其中的差異大概是多了「指紋辨識」、「藍芽」、「Intel 2915 a/b/g 無線網卡」(原本是 2200 b/g)。

而 bluetooth 是 1.2 版的耶。所以「理論上」應該要能支援 A2DP 才對。在上一次回新營的時候,借了 CPU 的那組 HT820 試了一下,發現 IBM 的原廠驅動根本就不能用,便花了一點時間 google 了一下。 那時看到了 Widcomm 4.0.1.2101 這篇文章,於是就照做了。當時的結果是,雖然會動不過怪怪的。好像是 widcomm 對於給 IBM 的藍芽有稍微動點手腳,於是 BT Stack Server 會說 license 然後爛掉,雖然勉強測試一下 A2DP 會動(會裝一個 「爛牙膏品質音效」),可是音質實在是... ~!@# 。不過那天玩的太累想睡覺,於是就草草收工。讓小黑上得爛牙一直癱瘓。

星期四下五因為老闆去開會,沒有上 ADV OS ,所以獲得了一些空閒時間,於是試著解這問題(本來是在選說是要來繼續幫小黑上的 FreeBSD 裝 xorg 還是來修藍芽,還好沒選前者,不然就真的每次剛辛辛苦苦 make 完然後就 release 新版了 Orz)。沒想到到那個論壇晃的結果,發現 Widcomm 5.0.1.802 這篇,然後就先把之前的驅動移除,照他那邊的步驟去抓 5.0.1.802 ,然後解開完之後把 svcpack 蓋上去之後再開始安裝,就很順利的搞定了。實在是很簡單,而且還多了預設的爛牙膏品質音效(A2DP),下次回去再來測測。

題外話,某隻機八鴨的 2672-iv7 上的爛牙據說也可以用。不過請「千萬」不要裝兩次,因為某鴨裝兩次之後的結果是:



而且據說是無解,因為安全模式也進不去,直接把爛牙模組拔掉也沒用。他到最後是直接重灌,偉哉 M$ !

給張審查砲彈:


所以其實 IBM ThinkPad 如果有藍芽的都可以去升級,雖然我看到很多人說 1.1 的上面很多功能不能硬上,可是看機八鴨那邊測試起來好像都還蠻 OK 的,而且換了這驅動之後速度從之前的龜速改善到 70kbytes 左右,很不錯 (小黑互傳的結果,對手機也有稍微改善,不過看起來限制會在手機方)。至少多了一大堆 profile 看起來也爽很多啦 XD。

2005年12月17日 星期六

WDS

這真是個令人討厭的東西。沒有標準化然後害我在那邊搞半天,後來才發現原來除了 SSID 設一樣, Channel 設相同、兩台 AP MAC 要互抄之外,最重要的是「最好」兩台 AP 是同一家廠商的。原本想說 MSI + ASUS 明明就有小通一下下,可是忽然就完全不通了。莫名其妙,就當一頭霧水之際,忽然覺得搞不好 WDS 並沒標準化,於是狠下心再去衝了一台 ASUS 的 WL520G,設完馬上通,而且很快,也不會一頓一頓的。更不會跑一陣子就爛掉。

亙,之前浪費的時間還來啊。

不過呢,現在跟沈大胖之間 AP 用 WDS + WEP 戶連,嘿嘿,這種爽度還是有的 XD。他在他家用網路比我在客廳還快,不過有趣的是 ASUS 的強度設定從 19 -> 84 的話好像超級猛耶 XD。兩台都沒換天線用原廠天線可以跑出 2M 多的成績算不錯了吧 XD。

也正因為這樣這裡多了台 MSI 的 AP ,拿到台中來升級升級 XD。現在無線網路升級成 802.11G + WPA-PSK,應該至少會比較安心一點吧。(不過電磁波.. Orz)。

附帶一題, ASUS 的 WL520G 有放 source code 耶!要不是沒空不然就自己來亂搞 XD。



一樣有圖有真相,上面那張是 AP 疊疊樂。

Install FreeBSD6 on X41 tablet (1)

據說下學期的文獻是留朕恤老師,當然要來巴結一下,至於為什麼,這個故事以後再講。

其實不只這個原因,機八鴨在 X31 上玩 FreeBSD 玩了好一陣子了,雖然他很機八都沒留 blog or wiki ,不過總是還有人可以指點,在遇到困難上面會快很多 XD。我從拿到 X31 就一直喊說要玩玩到都已經被搶走了還是沒玩到,於是乎趁這裡拜比較悠哉,就鐵了心試著來裝 FreeBSD 到 laptop 上。

沒想到困難重重啊,一開始把 combo 機接上去之後很高興的把 FreeBSD 6.0 Release Disc1 丟進去,想說大概三分鐘就可以搞定,之後再慢慢 make 就好,沒想到給我的是這張畫面:

x41t_FreeBSD6_crash_on_BTX_Loader

真是歡樂到一個不行。然後試了漂長輩助教以及機八鴨的 combo 也是不行,發生同樣的情況,於是跑去抓其他舊的版本(因為據機八鴨說他在 FreeBSD6 RC 的 iso 也是開不起來,不過症狀不太一樣),從 5.1 5.2.1 5.3 5.4 都試了,其中好像只有 5.3 沒有畫面一直跑而是 hang 住,其他都一樣的情形。總不會要我用 4.X 試吧?於是一氣之下跑去抓 FreeSBIE、pfsense、DragonFlyBSD,結果還是都一樣。於是只好請教 google ,看到比較可能的情形是說:FreeBSD 6 Released BTX loader issue - BTX loader 不支援 USB 裝置造成的。如我上一篇所說,難不成要如此之嗎?

由於「邪」太過於麻煩,還要先裝 Linux ,如果讓我一不小心裝 gentoo 上去大概就黏住那就不能巴結老鄧了 ,所以我選擇了「惡」

PXE 這東西事實上並不陌生,約在四五年前幫高中做電腦教室的時候就已經玩了一次,那時 google 打 PXE 可以說東西少的可憐,所以必須從 Intel、Realtek 那邊挖資料,然後 try and error 想辦法慢慢兜,連螃蟹卡的 boot rom 都要自己燒,還常常會有某版不能配某版的問題,實在是超麻煩。不過很有趣就是了,尤其是把整套系統兜出來之後,透過 PXE Server 開機,派 PCDOS 開機檔,然後用 config.sys 和 autoexec.bat 搭配寫開機選單,再加上 ghost server/ghost preload partition 的配置,可以說撐得上當時自己很滿意的作品。不過可惜的是當時沒有寫 doc 的觀念,只有自己習慣性的隨手寫了幾個 TXT 檔,然後跟著 server backup 起來。只是我沒想到用三台 server 做交互備份的情況下還能夠爛的如此徹底。在一年多後的某天,看到網路上有人也在搞這些東西,可是解的都不怎麼漂亮、或是說不完整,覺得把那些東西拿出來寫 doc 或分享應該不錯,才發現竟然一點文件、一點成果都不剩。

其實說穿了技術性不高,只是那時幾乎沒現成的工具的情況下苦工不少,全部不見了還真有點可惜。這次 build PXE Server 就非常快了。參考了終極流行(toppop)金蟬脫殼這篇、以及 mount iso 的方法、還有 Diskless FreeBSD 5.2.1 release PXE DHCP NFS NIS 。大概的步驟不外乎是:

Mount ISO
mdconfig -a -t vnode -f /your/iso/image/6.0-RELEASE-i386-disc1.iso -u 0
mount -t cd9660 /dev/md0 /mnt/freebsd6

Install DHCPD
cd /usr/ports/net/isc-dhcp3-devel
make install clean

Modify RC.CONF
該開的東西要開

ee /etc/rc.conf
inetd_enable=yes

dhcpd_enable="YES" # dhcpd enabled?
dhcpd_flags="-q" # command option(s)
dhcpd_conf="/usr/local/etc/dhcpd.conf" # configuration file
dhcpd_ifaces="" # ethernet interface(s)
dhcpd_withumask="022" # file creation mask

nfs_server_enable="YES"

EDIT dhcpd.conf
ee /usr/local/etc/dhcpd.conf
在 host or network 裡加上:
filename "pxeboot";
option root-path "192.168.200.254:/";
next-server 192.168.200.254;

如果 tftp server 跟 dhcp server 不同台的話就由 next-server 指過去,要改 root-path 的話用 root-path 改。
改完重跑: /usr/local/etc/rc.d/isc-dhcpd.sh restart

EDIT inetd.conf
ee /etc/inetd.conf
把註解取消並改後面 boot 路徑
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /home/tftp
檔名由 dhcpd.conf 的 filename 指定,所以 tftpd 只要給路徑。
改完重跑: /etc/rc.d/inetd restart

EDIT exports
ee /etc/exports
#/usr -alldirs -ro
/home/tftp/freebsd60 -ro -maproot=root -network=192.168.200.0 -mask=255.255.255.0
#/mnt/freebsd6 /mnt/freebsd6 -maproot=root x41tablet
/usr -ro -maproot=root -alldirs -network=192.168.200.0 -mask=255.255.255.0
#/diskless_ro -ro -maproot=0 -network 192.168.1.0 -mask 255.255.255.0
/ -ro -maproot=root -alldirs -network=192.168.200.0 -mask=255.255.255.0

改完記得重跑 mound -r
kill -HUP `cat /var/run/mountd.pid`

就會動了,不過跑起來一直 hang 在 rootfs:

freebsd_x41t_pxe_hang.PNG
找了半天不知道怎麼回事,ping 的到但是服務都沒繼續往下跑。感覺上他的 fstab 都沒有吃,花了好幾個小時實在是累了於是就放大絕招。用 VMWARE 灌進去。

在機八鴨的教誨之下:
[上午 04:57:02] (鴨)...: 我現在跟你說要用entire disk 阿
[上午 04:57:17] (鴨)...: 所以醬子相對來說會比較危險一點
[上午 04:58:16] (鴨)...: 你現在的步驟是...
把vmware 的vmdk 幹掉
重新新增一個physical disk
選entire disk
[上午 04:58:31] (鴨)...: 開vmware 起來之後把freebsd 裝完
[上午 04:58:59] (鴨)...: 裝好以後趁除/d9 還可以開起來的時候 dd 把 512 byte 讀出來
[上午 04:59:28] (鴨)...: 讀完以後 windows 的partition 設回來active
[上午 04:59:37] (鴨)...: 降子應該就好了

很順利的搞定了。而且全部都在 vmware 當中搞定(危險動作請勿模仿啊 XD,搞爛恕不負責)。因為我之前就已經用工具先把磁區分好了:

partition_x41.PNG
所以在裝的時候小心,不要安裝 MBR ,然後再割分割區的時候直接用 T 把 type 設成 165 (freebsd) 然後進去切 slice 就好了。至於這裡我沒有割 /swap 因為打算跟 windows 共用 2G 的那塊 fat32 。另外在 loader 的部份為了簡單直接用 NT 的 loader ,可以參考 FreeBSD 的 FAQ 有關 NT Loader 的部份,或是 MicrosoftWindowsBootManager,我是照 debian 那個方法下了:
dd if=/dev/ad0s1c of=/root/BootSector.FreeBSD bs=512 count=1

然後把 BootSector.FreeBSD 想辦法傳出來丟到根目錄後改 boot.ini 加上:
C:\BootSector.FreeBSD="FreeBSD"

並且到 FreeBSD 裡面用 fdisk -t -a -1 ad0 把 Windows XP 的 partition 設回 active ,就可以重開看成果(或是準備炸的亂七八糟了)。

2005年12月14日 星期三

X41tablet 處處挑戰

拿到這台小黑後,馬上就直接買了條 1G RAM 給插了上去,因為 4200RPM 的硬碟實測傳輸率只有 20MBytes 左右,實在是不夠我用,所以想說最好是把 RAM 給插多一點,不然老是在 io 硬碟效率又差的話應該會很難過。沒想到,開始使用的時候就發現了 windows 休眠老是會失敗的問題。當然,我沒想到是 RAM 插太多的問題。於是用了一個多月直到現在。


上禮拜比較閒,抽空想辦法 google 了一下,在 tabletpcbuzz 看到一篇有用的「>1GB RAM and Hibernate Problem -- Possible Solution (Unfortunately Not)」,照著他說的在 boot.ini 加上:


multi disk rdisk partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=OptIn /PAE


結果情況真的改善很多,雖然還是會失敗代表不是治標的方法,不過比起來,原先大概休眠十次會有九次失敗,並且跳出「系統資源不足,無法完成 API」,現在大概十次裡只有一次會出現,改善很多。


雖然在上面的 link 中會發現 M$ 好像知道這問題而且也做了 patch ,不過那其實是虎爛的。因為我跑去抓「330909」的時候就發現其實這個套件應該要存在 SP2 裡面裡,但是在我的電腦幾乎都是有更新就裝,沒道理沒裝到。而且抓下來的時候會告訴你「你已經裝了 SP2 ,不能安裝..blah」。


這台小黑還真是處處充滿挑戰啊,前幾天想裝 FreeBSD 卻發現光碟開機就直接爛在 loader ,試了其他台 USB-CDROM 也是一樣,然後也試了 DragonFlyBSD、FreeBSD 5.3 5.4 6.0 、還有之前說想玩的 pfsense,查了一下看到「FreeBSD 6 Released BTX loader issue」據說是 Loader 不支援 USB device ,但是機八鴨在 X31 上面裝的很高興啊!總不會真的要我玩很邪惡的「FreeBSD remote install」吧?


雖然現在想用的方式「PXE install」好像更邪惡了一點 *grin* 。

2005年12月8日 星期四

perl-after-upgrade

我還在納悶怎麼每台機器本來是 FreeBSD 5.x 升到 6.0 之後 perl 都會因為 Locale 爛掉,然後重裝 perl 之後總是會發生 libperl.so 消失的神秘事件。

剛剛我發現了, more 了一下 perl-after-upgrade 之後才發現原來在耍笨,沒有 perl-after-upgrade -f 是不會實際上 perform 的。因為實在太笨了,所以記下來給大家笑。