2012年1月13日 星期五

Ubuntu Packaging Guide 和 UDD

Ubuntu Packaging Guide 如果只看文章標題和列表的話,表面上似乎和 debian 沒什麼差別。

但是 Ubuntu 現在都是透過 Ubuntu Distributed Development 的模式來開發,所以裡面許多章節都是重寫過的,新增加了 UDD 的部份。

例如 Uploading a package,裡面提到了在 dput 之面必須用 bazzar 在 launchpad 建立一個 branch 之類的新流程。

取得WMI GUID的三個方式

許多筆記型電腦的熱鍵(hotkey)都是透過WMI介面來控制的,常見的如音量大小、亮度,wifi開關等…。

在實作或是debug時,第一步就是必須取得WMI的GUID。在Linux下我所知道的有三種方式可以取得:

方式一:`ls -l /sys/class/wmi`

這種方式只能列出所有由wmi.ko (ACPI-WMI Mapping Driver)得到的GUID,沒有其它如flag的資訊。

方式二:使用 wmidump

wmidump可以列出詳細的wmi資訊,但是用法比較麻煩,必須先dump DSDT,再用文字編輯器把 _WDG 中的資料複製到另一個文字檔案,然後再餵給 wmidump。wmidump也沒在debian/ubuntu archive中,必須自己從上面的git tree clone下來編繹。

方式三:`sudo fwts wmi`

yeah,最簡單的方式,用 Firmware Test Suite (fwts) \o/。可以列出完整的wmi資訊,用法又簡單。

2012年1月12日 星期四

增加fwts的測項

幫fwts增加一個測項十分簡單,十分類似kernel driver的型式。

下面這段簡單的例子是從 http://kernel.ubuntu.com/git?p=hwe/fwts.git;a=blob;f=src/example/blank/blank.c 刪掉一些 comment 而來。

不過如果你真的要開始coding的話,可以直接從 blank.c 開始,裡面有更多詳細的註解。

#include "fwts.h"

static int example_init(fwts_framework *fw) {
}

static int example_deinit(fwts_framework *fw) {
}

static int example_test1(fwts_framework *fw) {
}

static int example_test2(fwts_framework *fw) {
}

static fwts_framework_minor_test example_tests[] = {
 { example_test1, "Example sub test1 name." },
 { example_test2, "Example sub test2 name." },
 { NULL, NULL }
};

static fwts_framework_ops example_ops = {
 .description = "Example name.",
 .init        = example_init,
 .deinit      = example_deinit,
 .minor_tests = example_tests
};

FWTS_REGISTER(example, &example_ops, FWTS_TEST_ANYTIME, FWTS_BATCH);

2012年1月9日 星期一

Firmware Test Suite (fwts): BIOS測試工具

Firmware Test Suite(fwts)是目前Canonical Hardware Enablement team維護的BIOS測試工具。HWE的日常工作常常遇到許多BIOS的bug,所以我們將常見的BIOS bug的測項寫成這個工具。

在這個Ubuntu release cycle,我開始接下fwts套件的維護工作,歡迎大家的使用。 :-)

git tree: http://kernel.ubuntu.com/git?p=hwe/fwts.git

想使用最新版本,也可在firmware testing team PPA安裝。