- 积分
- 1230
- 在线时间
- 2636 小时
- 最后登录
- 2025-4-29
- 阅读权限
- 70
- 精华
- 0
 
- UID
- 196
- 帖子
- 1936
- 精华
- 0
- 经验
- 1230 点
- 金钱
- 1147 ¥
- 注册时间
- 2004-3-27
|

楼主 |
发表于 2011-2-21 10:37
|
显示全部楼层
回复 4# 海胆
没人回答
自己研究:(网友SmileXP/小呆原创,需要转载,请注明出处)
声明:修改声卡固件相当危险,不了解下面是写什么的切勿贸然刷新,本站不对因刷新固件导致的声卡损坏负责!
修改原理:
大家知道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而另一款不能使用的情况。那么有什么办法可以解决这个问题呢?
修改思路:
既然知道了这些功能的差异只是VIA人为的结果,那么VIA是如何实现对公板卡的限制的呢。常见的驱动程序限制措施不外乎检查Vendor ID和Sub ID、Device ID 这三种。先来分析Dev ID这种情况,市场上出现了不同厂商同种芯片但是一种卡能开3D API而另一种卡不能开启的情况。显然,如果通过Dev ID来识别的话,不可能出现这种情况(同种芯片Dev ID通常相同)。那么唯一的可能性应该就是通过Vendor ID和Sub ID来识别了。
使用eeprw.exe工具读出SQ710II的固件,查阅LINUX ALSA中Envy24固件定义相关资料,发现固件的第0至第3个字节用于定义Vendor ID和Sub ID(其余定义请查阅附录)。查阅Maya44 MK2的固件数据,发现与SQ710II的固件比较接近,因此决定使用Maya44 MK2固件中的Vendor ID和Sub ID。将SQ710II的固件修改为:
Offset#0=A6;
Offset#1=04;
Offset#2=14;
Offset#3=58;
Offset#4=1C;
Offset#5=01;
Offset#6=02;
Offset#7=02;
Offset#8=10;
Offset#9=C1;
Offset#A=FF;
Offset#B=00;
Offset#C=00;
Offset#D=FF;
Offset#E=00;
Offset#F=00;
Offset#10=FF;
Offset#11=00;
Offset#12=00;
Offset#13=00;
Offset#14=01;
Offset#15=01;
Offset#16=01;
Offset#17=00;
Offset#18=01;
Offset#19=00;
Offset#1A=00;
Offset#1B=00;
Offset#1C=06;
Offset#1D=00;
Offset#1E=00;
Offset#1F=00;
保存为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初始化)
固件数据定义
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.)
Byte 4: Size of EEPROM data
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..)
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.
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).
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).
Byte 9: SPDIF configuration byte - gets written tothecorresponding card register by the driver. Controls the SPDIF transmitter.
Byte 10: GPIO Direction
Byte 11: GPIO Direction 1
Byte 12: GPIO Direction 2
Byte 13: GPIO Mask
Byte 14: GPIO Mask 1
Byte 15: GPIO Mask 2
Byte 16: GPIO State
Byte 17: GPIO State 1
Byte 18: GPIO State 2 |
|