後來看了他的 Open Source 之後發現,根本就還停留在 OpenSolaris 的階段 驅動幾乎沒什麼更新。
不過很慶幸的是他有開放原始碼,可以自己修改編譯驅動,原先以為很難參考 BSD 跟 Linux的原始碼想試圖修改看看,後來發現他的原始碼寫的真不錯,只要添加 PCI ID 進去就行了,音效卡驅動不用在個別定義什麼 Code 、節點之類 ....
OpenIndiana 重新編譯驅動與安裝的方法
範例 : Realtek ALC 283 驅動 audiohd DEV_ID 0x10ec0283 控制晶片是8 Series HD Audio Controller pci8086,9c20
* 查看 Audio 裝置 ID
代码: 全选
cat /dev/sndstat
SunOS Audio Framework
Audio Devices:
0: audiohd#0 onboard1, a (DUPLEX)
1: audiohd#1 onboard1, a (DUPLEX)
Mixers:
0: audiohd#0 onboard1, a HDMI
Unknown HD codec: 0x80862807
1: audiohd#1 onboard1, a
Unknown HD codec: 0x10ec0283
0x10ec0283 是 Realtek ALC 283 喇叭是接在這個裝置上
* 安裝編譯工具
sudo pkg install build-essential
* 下載 OpenIndiana 原始碼
git clone https://github.com/illumos/illumos-gate.git
修改 Audio 驅動原始碼
到 $HOME/illumos-gate/usr/src/uts/common/io/audio/drv/audiohd 目錄內
打開 audiohd.c 在 audiohd_codec_info_t audiohd_codecs 裡面 添加 {0x10ec0283, "Realtek ALC283", (NO_SPDIF)},
* 編譯
cd $HOME/illumos-gate/usr/src/uts/common/io/audio/drv/audiohd
export PATH=$PATH:/opt/gcc/4.4.4/bin
CFLAGS="-I$HOME/illumos-gate/usr/src/uts/common"
cc -D_KERNEL -m64 -xarch=sse2a -xmodel=kernel $CFLAGS -c audiohd.c
ld -dy -r -o audiohd audiohd.o -N drv/audio
* 安裝驅動
# Unload Module
代码: 全选
MODNAME=audiohd
sudo rem_drv $MODNAME
MOD_PID=$(modinfo | grep $MODNAME | awk '{print $1}')
sudo modunload -i $MOD_PID
代码: 全选
sudo rm -rf /kernel/drv/amd64/audiohd
sudo ginstall -D -m755 audiohd /kernel/drv/amd64/audiohd
sudo chown root:sys /kernel/drv/amd64/audiohd
代码: 全选
sudo add_drv -i 'pci8086,9c20' -m'* 0666 root sys' $MODNAME
sudo modload -p drv/$MODNAME
sudo devfsadm -i $MODNAME
sudo bootadm update-archive -fv