thinkpad-osd & acpi_ibm - BBS
By Ursula
at 2005-09-27T08:35
at 2005-09-27T08:35
Table of Contents
(重貼一次,在 google 上貼的似乎不見了 @@)
現在的硬體廠商幾乎都是綁著 Windows出售筆記型電腦,出廠的時候通常都會有一些方
便的快速鍵(如調整螢幕亮度、音量等),按下去的同時也多半會有osd(on screen
display)提示顯示在螢幕上,方便使用者知悉目前按鍵狀況,比如說 IBM Thinkpad 都
會有一些音量大小按鍵(如 X, T series),或是有 home/mail/search/favorites 等快
速鍵(如 A, S, I series),可惜的是這些都是由軟體控制,因此有些可能有可能會被
FreeBSD支援,有些可能就沒有支援。自 FreeBSD-5 之後,acpi(4)已有顯著的改進,
自freebsd-5.4 以後 cpufreq 架構出來,進而有了 powerd(8) 等電源控制的工具開發
出來,搭配這些,在筆記型電腦上使用 FreeBSD 比起以前更便利。不過這篇文章我把
重點放在 thinkpad osd 上面。
提到 Thinkpad OSD 之前,我們來看一些歷史,acpi_ibm(4): ACPI extra drivers
最初是由渡邊尊紀(Takanori Watanabe)所撰寫,後來大部份的code再由 Markus
Brueffer 重新撰寫(*1),2005/05/31 由 Brueffer 在 freebsd-acpi mailing
list 中徵求測試,而 acpi_ibm(4) 改進的特點有:
(1) 重新在 sysctl tree 中定位
hw.acpi.ibm,並且重新命名部份的 sysctls(目前的sysctls 為
dev.acpi_ibm)
(2) 支援更多熱鍵 (音量, Fn+Home/End: 調整螢幕亮度,
Fn+PgUP: LED, Access IBM 鍵)
(3) 增加 acpi events 支援
(4) 可以改變音量、靜音、螢幕亮度、還有 thinkpad led
light(其他部份 sysctls 為唯讀)
(5) 支援讀取風扇狀態及速度(但是不能更動 sysctls)
(6) 支援最多8個溫度感測器
prerequisite:
FreeBSD 6.0以上或 current
I. 安裝設定
1. 首先載入acpi_ibm.ko,或是直接寫入核心設定檔中:
device acpi_ibm
如果要使用動態核心模組的話,請使用
#kldload acpi_ibm.ko
或是寫入 /boot/loader.conf 加入
acpi_ibm_load="YES"
載入之後 dmesg 會出現 acpi_ibm0: <IBM ThinkPad ACPI Extras> on acpi0
2. 從 ports 安裝 deskutils/tpb
怎麼從 ports 安裝,請看 handbook
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports-using.html
3. 設定 .tpbrc
% cp /usr/local/etc/tpbrc.default ~/.tpbrc
% vi ~/.tpbrc
我的設定為(有更動過的,其餘為預設):
# THINKPAD 鍵,我設定為開啟出 aterm
THINKPAD /usr/local/bin/aterm -title console
# Fn 鍵,因為在我的 X31 上面, Fn+F3
仍然無作用,因此我自行設定
# 按下 Fn 強制將螢幕關閉(在 X 底下)
fn /usr/X11R6/bin/xset dpms force off
# 顯示字型,可以用 xfontsel 自行選擇
OSDFONT -*-terminal-*-*-*-*-*-*-*-*-*-*-*-*
# 顯示的顏色,你可以從 ports 安裝 xcolors
去選擇顏色名稱
OSDCOLOR Green
# osd position 顯示的位置
OSDPOS MIDDLE
# 對齊方向
OSDALIGN CENTER
(請自行依照需求設定,參考 tpbrc.default
裡頭的說明)
II. acpi_ibm.ko
接下來我們實際來測試看看(以 IBM Thinkpad X31為例,”/*
*/” 內為我的註解)
# sysctl -a | grep ibm
dev.acpi_ibm.0.%desc: IBM ThinkPad ACPI Extras
/*以下表示在這個 sysctl 所使用的是 acpi_ibm(4)
的驅動程式*/
dev.acpi_ibm.0.%driver: acpi_ibm
dev.acpi_ibm.0.%location: handle=\_SB_.PCI0.LPC_.EC__.HKEY
/* plug and play information*/
dev.acpi_ibm.0.%pnpinfo: _HID=IBM0068 _UID=0
dev.acpi_ibm.0.%parent: acpi0
dev.acpi_ibm.0.initialmask: 2060
/* 目前有的 mask ,請 man acpi_ibm(4)*/
dev.acpi_ibm.0.availmask: 2524
dev.acpi_ibm.0.events: 0
dev.acpi_ibm.0.eventmask: 2060
/* 熱鍵,這個 sysctl 也是唯讀的 */
dev.acpi_ibm.0.hotkey: 2448
/* LCD 螢幕亮度,可調整,共有 8 個階段可調整:0, 14,
28, 42, 57, 71, 85, 100% */
dev.acpi_ibm.0.lcd_brightness: 4
/* 音量控制,具有15個階段可以調整,0, 7, 14, 21, 28, 35,
42, 50, 57, 64, 71, 78, 85, 92, 100% */
dev.acpi_ibm.0.volume: 9
/* 靜音 */
dev.acpi_ibm.0.mute: 0
/* 螢幕上方的 LED 小燈 */
dev.acpi_ibm.0.thinklight: 0
/* 藍芽模組,我這臺沒有藍芽 */
dev.acpi_ibm.0.bluetooth: 0
/* 無線網路模組 */
dev.acpi_ibm.0.wlan: 1
/* 散熱風扇速度,0 是關掉,最大是7,唯讀的 sysctl */
dev.acpi_ibm.0.fan_speed: 0
/*
風扇狀態,為有或無,這邊並不是表示風扇的開或關,請注意*/
dev.acpi_ibm.0.fan: 1
/* 內建的溫度感測器,最多支援 8 個感測器,分別為
cpu,mini pci
模組,硬碟,顯示晶片(GPU),內建電池,ultrabay 電池,
內建電池,ultrabay 電池的溫度,單位是攝氏。 */
dev.acpi_ibm.0.thermal: 52 -1 61 47 38 -1 34 -1
使用:
/usr/local/bin/tpb
for example:
tpb --osd=on --verbose
有圖有真相:
http://psilotum.twbbs.org/images/tpb.png
註記:
在 thinkpad
部份機種鍵盤上方向鍵旁邊有兩個鍵,在原本設計中,為瀏覽網頁能看前一頁及後一頁,但只侷限於
IBM PRELOAD_OS,如果要啟用,可以在 X 啟動後,使用
xmodmap(1)修改,或者你也可以改成你想要的快速鍵。以下範例為
page up / page down
xmodmap -e "keycode 233 = Page_Down"
xmodmap -e "keycode 234 = Page_Up"
Reference:
1) Markus 於 May 31, 2005 在 freebsd-acpi/mobile mailing-list
所發佈的信及其討論串
http://lists.freebsd.org/pipermail/freebsd-acpi/2005-May/001567.html
http://lists.freebsd.org/pipermail/freebsd-acpi/2005-June/001608.html
--
現在的硬體廠商幾乎都是綁著 Windows出售筆記型電腦,出廠的時候通常都會有一些方
便的快速鍵(如調整螢幕亮度、音量等),按下去的同時也多半會有osd(on screen
display)提示顯示在螢幕上,方便使用者知悉目前按鍵狀況,比如說 IBM Thinkpad 都
會有一些音量大小按鍵(如 X, T series),或是有 home/mail/search/favorites 等快
速鍵(如 A, S, I series),可惜的是這些都是由軟體控制,因此有些可能有可能會被
FreeBSD支援,有些可能就沒有支援。自 FreeBSD-5 之後,acpi(4)已有顯著的改進,
自freebsd-5.4 以後 cpufreq 架構出來,進而有了 powerd(8) 等電源控制的工具開發
出來,搭配這些,在筆記型電腦上使用 FreeBSD 比起以前更便利。不過這篇文章我把
重點放在 thinkpad osd 上面。
提到 Thinkpad OSD 之前,我們來看一些歷史,acpi_ibm(4): ACPI extra drivers
最初是由渡邊尊紀(Takanori Watanabe)所撰寫,後來大部份的code再由 Markus
Brueffer 重新撰寫(*1),2005/05/31 由 Brueffer 在 freebsd-acpi mailing
list 中徵求測試,而 acpi_ibm(4) 改進的特點有:
(1) 重新在 sysctl tree 中定位
hw.acpi.ibm,並且重新命名部份的 sysctls(目前的sysctls 為
dev.acpi_ibm)
(2) 支援更多熱鍵 (音量, Fn+Home/End: 調整螢幕亮度,
Fn+PgUP: LED, Access IBM 鍵)
(3) 增加 acpi events 支援
(4) 可以改變音量、靜音、螢幕亮度、還有 thinkpad led
light(其他部份 sysctls 為唯讀)
(5) 支援讀取風扇狀態及速度(但是不能更動 sysctls)
(6) 支援最多8個溫度感測器
prerequisite:
FreeBSD 6.0以上或 current
I. 安裝設定
1. 首先載入acpi_ibm.ko,或是直接寫入核心設定檔中:
device acpi_ibm
如果要使用動態核心模組的話,請使用
#kldload acpi_ibm.ko
或是寫入 /boot/loader.conf 加入
acpi_ibm_load="YES"
載入之後 dmesg 會出現 acpi_ibm0: <IBM ThinkPad ACPI Extras> on acpi0
2. 從 ports 安裝 deskutils/tpb
怎麼從 ports 安裝,請看 handbook
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports-using.html
3. 設定 .tpbrc
% cp /usr/local/etc/tpbrc.default ~/.tpbrc
% vi ~/.tpbrc
我的設定為(有更動過的,其餘為預設):
# THINKPAD 鍵,我設定為開啟出 aterm
THINKPAD /usr/local/bin/aterm -title console
# Fn 鍵,因為在我的 X31 上面, Fn+F3
仍然無作用,因此我自行設定
# 按下 Fn 強制將螢幕關閉(在 X 底下)
fn /usr/X11R6/bin/xset dpms force off
# 顯示字型,可以用 xfontsel 自行選擇
OSDFONT -*-terminal-*-*-*-*-*-*-*-*-*-*-*-*
# 顯示的顏色,你可以從 ports 安裝 xcolors
去選擇顏色名稱
OSDCOLOR Green
# osd position 顯示的位置
OSDPOS MIDDLE
# 對齊方向
OSDALIGN CENTER
(請自行依照需求設定,參考 tpbrc.default
裡頭的說明)
II. acpi_ibm.ko
接下來我們實際來測試看看(以 IBM Thinkpad X31為例,”/*
*/” 內為我的註解)
# sysctl -a | grep ibm
dev.acpi_ibm.0.%desc: IBM ThinkPad ACPI Extras
/*以下表示在這個 sysctl 所使用的是 acpi_ibm(4)
的驅動程式*/
dev.acpi_ibm.0.%driver: acpi_ibm
dev.acpi_ibm.0.%location: handle=\_SB_.PCI0.LPC_.EC__.HKEY
/* plug and play information*/
dev.acpi_ibm.0.%pnpinfo: _HID=IBM0068 _UID=0
dev.acpi_ibm.0.%parent: acpi0
dev.acpi_ibm.0.initialmask: 2060
/* 目前有的 mask ,請 man acpi_ibm(4)*/
dev.acpi_ibm.0.availmask: 2524
dev.acpi_ibm.0.events: 0
dev.acpi_ibm.0.eventmask: 2060
/* 熱鍵,這個 sysctl 也是唯讀的 */
dev.acpi_ibm.0.hotkey: 2448
/* LCD 螢幕亮度,可調整,共有 8 個階段可調整:0, 14,
28, 42, 57, 71, 85, 100% */
dev.acpi_ibm.0.lcd_brightness: 4
/* 音量控制,具有15個階段可以調整,0, 7, 14, 21, 28, 35,
42, 50, 57, 64, 71, 78, 85, 92, 100% */
dev.acpi_ibm.0.volume: 9
/* 靜音 */
dev.acpi_ibm.0.mute: 0
/* 螢幕上方的 LED 小燈 */
dev.acpi_ibm.0.thinklight: 0
/* 藍芽模組,我這臺沒有藍芽 */
dev.acpi_ibm.0.bluetooth: 0
/* 無線網路模組 */
dev.acpi_ibm.0.wlan: 1
/* 散熱風扇速度,0 是關掉,最大是7,唯讀的 sysctl */
dev.acpi_ibm.0.fan_speed: 0
/*
風扇狀態,為有或無,這邊並不是表示風扇的開或關,請注意*/
dev.acpi_ibm.0.fan: 1
/* 內建的溫度感測器,最多支援 8 個感測器,分別為
cpu,mini pci
模組,硬碟,顯示晶片(GPU),內建電池,ultrabay 電池,
內建電池,ultrabay 電池的溫度,單位是攝氏。 */
dev.acpi_ibm.0.thermal: 52 -1 61 47 38 -1 34 -1
使用:
/usr/local/bin/tpb
for example:
tpb --osd=on --verbose
有圖有真相:
http://psilotum.twbbs.org/images/tpb.png
註記:
在 thinkpad
部份機種鍵盤上方向鍵旁邊有兩個鍵,在原本設計中,為瀏覽網頁能看前一頁及後一頁,但只侷限於
IBM PRELOAD_OS,如果要啟用,可以在 X 啟動後,使用
xmodmap(1)修改,或者你也可以改成你想要的快速鍵。以下範例為
page up / page down
xmodmap -e "keycode 233 = Page_Down"
xmodmap -e "keycode 234 = Page_Up"
Reference:
1) Markus 於 May 31, 2005 在 freebsd-acpi/mobile mailing-list
所發佈的信及其討論串
http://lists.freebsd.org/pipermail/freebsd-acpi/2005-May/001567.html
http://lists.freebsd.org/pipermail/freebsd-acpi/2005-June/001608.html
--
Tags:
BBS
All Comments
Related Posts
重開機後
By Hedwig
at 2005-09-27T01:16
at 2005-09-27T01:16
安裝x window(xorg)的問題
By Iris
at 2005-09-26T21:46
at 2005-09-26T21:46
samba 3.0.20
By Sierra Rose
at 2005-09-26T12:22
at 2005-09-26T12:22
cacti執行之後 tmp 出現大量紀錄檔如何解決?
By William
at 2005-09-26T01:40
at 2005-09-26T01:40
關於mknod
By Isla
at 2005-09-25T23:15
at 2005-09-25T23:15