Genio350 Android13新增需求需要增加UAC的功能,UAC是USB Audio Class的縮寫,有時也叫UAD,UAD是USB Audio Device的縮寫。UAC/UAD定義了在USB規範下實現音頻的設備的實現和控制功能,這些功能包括不僅音頻數字部分的,也包括模擬部分。這些音頻數據(模擬和數字)和用於直接控制音頻環境的功能,如音量和音調控制。這個音頻設備類不包括操作與音頻數據的複製,如磁帶傳輸機制或CD-ROM驅動器控制。UAC 目前的發展已經經歷了1.0 ,2.0 到現在的3.0. win10目前只支持到UAC2.0,目前我們主要基於在Genio350 Android13來實現UAC2.0.
1. 內核增加uac配置
1. 內核增加uac配置
--- a/kernel-5.10/arch/arm64/configs/aiot8365p5_64_bsp_k510_defconfig
+++ b/kernel-5.10/arch/arm64/configs/aiot8365p5_64_bsp_k510_defconfig
@@ -837,6 +837,9 @@ CONFIG_USB_CONFIGFS_MASS_STORAGE=y
CONFIG_USB_CONFIGFS_F_AUDIO_SRC=y
+CONFIG_USB_CONFIGFS_F_UAC1=y
+CONFIG_USB_CONFIGFS_F_UAC1_LEGACY=y
+CONFIG_USB_CONFIGFS_F_UAC2=y
2.配置UAC設置,通過UART進行設置
console:/ # su
console:/ # echo 0 > /proc/sys/kernel/printk
console:/ # setprop vendor.usb.test none
console:/ # echo "0x0e8d" > /config/usb_gadget/g1/idVendor
console:/ # echo "0x201f" > /config/usb_gadget/g1/idProduct
console:/ # echo "uac2" > /config/usb_gadget/g1/strings/0x409/product
console:/ # mkdir /config/usb_gadget/g1/functions/uac2.gs0
console:/ # cd /config/usb_gadget/g1
console:/config/usb_gadget/g1 # ln -s functions/uac2.gs0 configs/b.1/f1
console:/config/usb_gadget/g1 # echo 11201000.usb > UDC
console:/config/usb_gadget/g1 #
3.PC上查看uac識別情況,生成了如下2個虛擬的audio設備。
提供一驗證手法可使用開源軟體 https://www.audacityteam.org/
> 軟體設定播放裝置為您配置好的節點, 播放音頻文件
> 軟體設定播放裝置為您配置好的節點, 播放音頻文件
>這是平台使用指令錄製: tinycap /sdcard/record.wav -D 1 -d 0 -c 2 -r 64000 -b 16
錄製的音頻文件即為在PC軟體播放的音頻文件。
以上基本上就完成了UAC的設置。
錄製的音頻文件即為在PC軟體播放的音頻文件。
以上基本上就完成了UAC的設置。
評論