|
以下是修改方法
2 q2 j6 T$ K/ n% i声明:修改声卡固件相当危险,不了解下面是写什么的切勿贸然刷新,本人不对因刷新固件导致的声卡损坏负责!
0 T1 J* O5 ~6 ~1 w* M7 ~' u6 y/ U- O! s8 }; d. D: Z2 U
修改原理:( @9 \0 w5 y6 A
大家知道VIA在最新的Envy24 4.XX驱动程序中不再使用Sensaura 3DPA API作为3D API,转而使用Qsound Labs的QSound API。不过由于授权费用的问题,VIA没有在公版驱动程序中开放此功能,只给部分交纳了授权费的厂家以及新款Envy24芯片开放了此功能。造成AV710等公板Envy24HT-S声卡在使用公版驱动程序的时候没有3D API的问题。而且也不能享受Qxpander、均衡器等不错的附加功能。由于Envy24系列芯片只是一个I/O Controller而已,对音频信号的处理都是交给CPU的,因此使用Envy24芯片的声卡不可能出现一款声卡能使用3D API而另一款不能使用的情况。那么有什么办法可以解决这个问题呢?
0 P4 t) ? i/ y x修改思路:
+ L- ?' n# r# j5 i; O 既然知道了这些功能的差异只是VIA人为的结果,那么VIA是如何实现对公板卡的限制的呢。常见的驱动程序限制措施不外乎检查Vendor ID和Sub ID、Device ID 这三种。先来分析Dev ID这种情况,市场上出现了不同厂商同种芯片但是一种卡能开3D API而另一种卡不能开启的情况。显然,如果通过Dev ID来识别的话,不可能出现这种情况(同种芯片Dev ID通常相同)。那么唯一的可能性应该就是通过Vendor ID和Sub ID来识别了。/ i0 W) L) W$ o! }, {
使用eeprw.exe工具读出SQ710II的固件,查阅LINUX ALSA中Envy24固件定义相关资料,发现固件的第0至第3个字节用于定义Vendor ID和Sub ID(其余定义请查阅附录)。查阅Maya44 MK2的固件数据,发现与SQ710II的固件比较接近,因此决定使用Maya44 MK2固件中的Vendor ID和Sub ID。将SQ710II的固件修改为:
1 L; Q) B) q; f5 oOffset#0=A6; $ L/ _5 X& ?8 H6 W# ? ?/ t( M7 q
Offset#1=04; 0 o) b V% A( {; u
Offset#2=14;
5 |2 B, k% a# ^7 z8 kOffset#3=58; " _) a$ j0 B$ V5 W7 Y/ R
Offset#4=1C;
% B, A9 a& W$ V3 p& j# K Z S' G( zOffset#5=01;
8 N. I K$ G: IOffset#6=02;
& U/ g6 K0 _5 X' t; V! wOffset#7=02; # X4 u. g" T) e# F6 o: C: U
Offset#8=10; 8 q( J" g' E& t( V# [0 B0 t5 C# P
Offset#9=C1;
' @8 N8 V' G! ?. P8 Y kOffset#A=FF;
" c, ]! ^1 I! @3 g' sOffset#B=00;
. H2 n* L; G4 \& y. u+ g. zOffset#C=00;
+ t7 X; t$ g* y, B9 O) iOffset#D=FF;
# N. O9 h4 G6 _' d: l, COffset#E=00; ) j% W' L- {5 X& j! T
Offset#F=00; ! w, ^! |- l# R% _' o
Offset#10=FF; 6 C2 `" p7 Y3 W, u
Offset#11=00; 9 Z+ V( N& y& J/ u+ c! `" E7 m5 [
Offset#12=00; 4 w; }& g7 f$ w3 w6 D2 `) y& p
Offset#13=00; 2 h0 B7 u4 y6 h9 b
Offset#14=01; $ s2 _6 B# ]! e# o. ]# S' c- m
Offset#15=01;
6 u% E# A8 `; w. H8 b" V: hOffset#16=01; # {6 h9 s7 G: S
Offset#17=00; e3 I3 U2 f8 Z; U) Z0 c* E( z
Offset#18=01;
8 b5 ~; |& f# [& V* m' KOffset#19=00;
% ?' K* u7 u9 _4 YOffset#1A=00;
; i* [4 C' |+ |: p- EOffset#1B=00; 5 e$ b9 w2 S$ A* B
Offset#1C=06;
* b. v2 R3 }$ p2 b9 v$ YOffset#1D=00;
/ e8 t) b& R G4 }, NOffset#1E=00;
, r# w5 a0 d! s8 S) ^Offset#1F=00;
5 t1 Z5 |, H/ l: O d# l3 S. ]3 a. c- p$ d! b. H. f+ _/ F$ } k
保存为eeprom.ini,使用U盘重启进入纯DOS状态(重启前记得将系统中原SQ710II的驱动程序卸载)。将eeprom.ini与eeprwa.exe置于同一目录,执行eeprwa.exe自动刷新工具自动刷新。重启后进入XP,系统报告发现新硬件,选择自动安装让其成为未知硬件,确认在设备管理器中出现多媒体控制器。然后执行VIA最新的Envy24 4.73b版驱动程序Setup程序,一路继续,由于是修改的固件,因此安装驱动程序时显示是未经WHQL认证的,但并不妨碍使用。安装完毕选择重启时选择否,进入控制面板执行Envy Audio Deck。进入高级控制,向下滚动直至出现QSound图标,将其勾取,Envy Audio Deck会提示需要重启。选择重启,重启后,Envy Audio Deck中左侧多出一个图标,这就是新增的Sound Effects(音效)功能选项。里面有均衡器、Qxpander、环境音效等选项,至此,修改初步成功。经过我一段时间的使用,并没有刷新为Prodigy 7.1的固件时出现的关机再开机后模拟输出无法使用的问题。一切功能正常,关机再开机后选项仍然存在且正常,至此修改完成。(Prodigy 7.1固件问题的原因在于刷新Prodigy 7.1的固件后DAC/AC'97 CODEC信息与声卡不符,关机再开机后无法对DAC初始化)9 @3 S! [8 o& {# i
& y% W T1 L4 A9 D6 e1 | o! P5 k: Q+ e- @6 d8 ]2 G
参考文章
$ r8 ^8 H2 v9 A4 ^$ J* c( a, cGetting Chaintech AV710 to work w/ QSound:/ h: f( K: A' J% v D; A
http://forums.viaarena.com/messa ... FORUMVIEWTMP=Linear7 R7 }/ o0 A' i/ |' W+ l
1 {7 |3 {% Q& n- `3 _% l附录:
! \+ [! b; \. i: [$ @相关工具:
+ U7 a) Y+ X4 a4 shttp://bbs.gzeshop.com/viewthrea ... &extra=page%3D1
+ t( A, O4 o' n |
6 d1 [% o" p7 f% y固件数据定义2 c+ c$ r5 c% K
Bytes 0-3: PCI subsystem vendor and subsystem device ID (Thisiswhat allows the driver to detect the brand/model of the card -the main PCI vendor and device ID are fixed and identify the card as an ICE1724 device.)6 H. M# Z; F6 p
9 L* g; v% S% `+ U0 }6 p8 `
Byte 4: Size of EEPROM data$ t- F+ R% q/ A- e
# a- P/ Q/ z2 D, g4 A w: m
Byte 5: EEPROM version (seems to be supposed to be1 for ICE1712 (Envy24) and 2 forICE1724 (Envy24HT), but seems like it's usually set to 1even on Envy24HT..)4 T" Q& s8 j* K4 k2 s7 J
/ J! H: P! Z4 B( U9 Q. ]& f+ u
Byte 6: System configuration byte - gets written to the corresponding card register by the driver. Controls clock crystal configuration, MPU-401 MIDI UART, how many ADCs/DACs are connected.2 m% X- s* F: P( J8 _
/ _) R' F8 M7 V
Byte 7: ACLink configuration byte - gets written to the corresponding card register by the driver. Controls the connection to the AC97 codec (i.e. the VT1616 used for the front, rear, center/LFE outputs).
9 d/ e3 y6 C2 d" n7 m" Z+ ]0 @! K# b, `( z$ A' T$ }
Byte 8: I2S configuration byte - gets written to the corresponding card register by the driver. Controls the connection to the I2S codec (i.e. presumably the Wolfson codec for the high sample rate output).
0 a6 Q; ?8 r$ x; B5 |9 e X" k6 s
, E$ C; J- H( `; \Byte 9: SPDIF configuration byte - gets written tothecorresponding card register by the driver. Controls the SPDIF transmitter.
. `! C% Z" F4 Y' d
5 ]; c3 D/ O6 {Byte 10: GPIO Direction; i x- k, e0 B( N
* J4 U' A1 C; { ^# Y# R6 V
Byte 11: GPIO Direction 1
' w: |! F0 ~9 V3 | g: ~. z3 K7 w* i# M9 Z Y3 E
Byte 12: GPIO Direction 29 x: e/ d" T" G: d, r% `7 l% J! \
6 r: |. t. x+ g5 S2 U
Byte 13: GPIO Mask% H8 `3 e& Z3 O0 ]" w/ ~1 f$ Y0 {/ z! t
& \5 D0 v. z$ T) R0 `Byte 14: GPIO Mask 1
9 R) e; I+ j: w" O0 V5 s! T* N0 F; X3 w! D. B+ f+ r1 Y
Byte 15: GPIO Mask 2, G. A2 j" F5 t0 u
- N; v: v- A5 u+ A' R' G
Byte 16: GPIO State! Z @. C1 d- [+ f+ d& H) v
6 k3 v6 R& Q6 z/ C; i# ?Byte 17: GPIO State 1
. Z' i: @1 F, J; i/ o$ s# C0 N' F: O. y, N+ {' N
Byte 18: GPIO State 21 Y0 ?2 o8 Q+ _4 x# S3 c3 G8 B
+ K. | {; A) M6 B& s/ w: Z
p! ^% H. }* X6 B2 o' p* x& @) o) S7 [+ @! D9 [- v8 ? e
The GPIO registers seem to be written into registers on thecard by the driver as well, these control the GPIO outputs which are presumably used to set sample rates on the DACs, etc.- K8 E3 @4 ?: X- |5 Q
2 \+ }' y: Z+ |( u; p
SmileXP
+ s2 G& k* Q0 @2 i 2006/1/21凌晨% I! j/ V7 F7 k- r- Q8 Y
版权所有,转载请注明原作者
: s% T! k! w; G- k- S
8 {& |$ ^$ d! q[ 本帖最后由 smilexp 于 2006-1-21 19:10 编辑 ] |
|