Navigation

    全志在线开发者论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • 在线文档
    • 社区主页

    V3s + RTL8723DS tina 执行 bt_test 蓝牙sink程序,发现本机声卡不出声,并且报以下错误 Couldn't open PCM:default

    其它全志芯片讨论区
    bluetooth bttest 蓝牙 v3s tina
    4
    11
    3955
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • tigger
      tigger LV 7 last edited by

      root@TinaLinux:/# bt_test
      root@TinaLinux:/# 2499.726214: [bt_manager_init:212]:  enable default profile from bt config.
      2499.726348: [bt_manager_enable:400]:  bt manager version:Version:3.0.1.202012201630,builed time:Dec 29 2020-02:46:30
      2499.726369: [bt_test_status_cb:71]:  bt is turnning on.
      Bluetooth init has been completed!!
      2500.158192: [bt_profile_global_init:356]:  start bluealsa :1 times
      2500.172669: [bt_test_dev_add_cb:104]:  address:74:15:75:F3:25:92,name:memory,class:5898764,icon:phone,address type:public,rssi:0
      2500.715659: [bt_test_adapter_power_state_cb:41]:  Turn on bt successfully
      2501.160441: [bt_test_status_cb:61]:  BT is ON
      addr:74:15:75:F3:25:92,name:memory,state:CONNECTED
      AGENT: Authorize Service (74:15:75:F3:25:92, 0000110d-0000-1000-8000-00805f9b34fb)
      2529.003802: [bt_test_a2dp_sink_connection_state_cb:261]:  A2DP sink connected with device: 74:15:75:F3:25:92
      2529.036032: [bt_test_avrcp_play_state_cb:315]:  BT palying music paused with device: 74:15:75:F3:25:92
      2529.036082: [bt_test_a2dp_sink_audio_state_cb:270]:  A2DP sink audio suspended with device: 74:15:75:F3:25:92
      2531.658987: [bt_test_avrcp_play_state_cb:313]:  BT palying music playing with device: 74:15:75:F3:25:92
      2531.659037: [bt_test_a2dp_sink_audio_state_cb:274]:  A2DP sink audio started with device: 74:15:75:F3:25:92
      2531.929696: [bt_a2dp_sink_start:523]:  a2dp sink start transmit.
      ALSA lib bluealsa-pcm.c:678:(_snd_pcm_bluealsa_open) Couldn't get BlueALSA transport: No such device
      2532.426324: [aw_pcm_open:399]:  --->Couldn't open PCM:default
      2532.426348: [_a2dp_sink_pcm_write:464]:  a2dp sink open pcm error:Operation not permitted
      ALSA lib bluealsa-pcm.c:678:(_snd_pcm_bluealsa_open) Couldn't get BlueALSA transport: No such device
      2532.427004: [aw_pcm_open:399]:  --->Couldn't open PCM:default
      2532.427024: [_a2dp_sink_pcm_write:464]:  a2dp sink open pcm error:Operation not permitted
      ALSA lib bluealsa-pcm.c:678:(_snd_pcm_bluealsa_open) Couldn't get BlueALSA transport: No such device
      2532.427598: [aw_pcm_open:399]:  --->Couldn't open PCM:default
      2532.427618: [_a2dp_sink_pcm_write:464]:  a2dp sink open pcm error:Operation not permitted
      ALSA lib bluealsa-pcm.c:678:(_snd_pcm_bluealsa_open) Couldn't get BlueALSA transport: No such device
      2532.428142: [aw_pcm_open:399]:  --->Couldn't open PCM:default
      2532.428161: [_a2dp_sink_pcm_write:464]:  a2dp sink open pcm error:Operation not permitted
      ALSA lib bluealsa-pcm.c:678:(_snd_pcm_bluealsa_open) Couldn't get BlueALSA transport: No such device
      2532.428789: [aw_pcm_open:399]:  --->Couldn't open PCM:default
      2532.428809: [_a2dp_sink_pcm_write:464]:  a2dp sink open pcm error:Operation not permitted
      ALSA lib bluealsa-pcm.c:678:(_snd_pcm_bluealsa_open) Couldn't get BlueALSA transport: No such device
      
      1 Reply Last reply Reply Quote Share 0
      • YuzukiTsuru
        柚木 鉉 LV 9 last edited by

        RTL8723DS的PCM通道接到I2S上了吗

        tigger 1 Reply Last reply Reply Quote Share 0
        • tigger
          tigger LV 7 @YuzukiTsuru last edited by

          @yuzukitsuru
          soc自带的内置声卡,tinyplay正常,看日志我怀疑alsa的配置有问题。

          1 Reply Last reply Reply Quote Share 0
          • tigger
            tigger LV 7 last edited by

            试了一下 D1 哪吒开发板正常

            板上执行bt_test,D1作为蓝牙喇叭(a2dp sink):

            root@TinaLinux:/# bt_test
            root@TinaLinux:/# 58.869509: BTMG[bt_manager_set_enable_default:513]:  enable default profile from bt config.
            58.869777: BTMG[bt_manager_enable:407]:  bt manager version:Version:3.0.1.202110291544,builed time:Oct 29 2021-09:42:35
            58.869823: BTMG[bt_test_status_cb:82]:  bt is turnning on.
            hcidump_xr start
            /etc/bluetooth/bt_init.sh: line 92: hcidump_xr: not found
            [   57.306631] sunxi-rfkill soc@3000000:rfkill@0: block state already is 1
            [   57.334566] sunxi-rfkill soc@3000000:rfkill@0: set block: 0
            [   57.351853] sunxi-rfkill soc@3000000:rfkill@0: bt power on success
            [   57.384869] [XR_BT_LPM] bluedroid_write_proc_btwake: bluedroid_write_proc_btwake 1
            [   57.393554] [XR_BT_LPM] bluedroid_write_proc_btwake: wakeup bt device
            [   57.400848] [XR_BT_LPM] bluedroid_write_proc_lpm: disable lpm mode
            

            手机连接蓝牙a2dp sink并播放音乐到D1:

            root@TinaLinux:/#
            root@TinaLinux:/#
            root@TinaLinux:/# [   60.836469] random: crng init done
            [   60.840265] random: 6 urandom warning(s) missed due to ratelimiting
            64.110834: BTMG[bt_profile_global_init:355]:  start bluealsa :1 times
            64.702252: BTMG[bt_test_adapter_power_state_cb:47]:  Turn on bt successfully
            65.114472: BTMG[bt_test_status_cb:67]:  BT is ON
            AGENT: Authorize Service (74:15:75:F3:25:92, 0000111E-0000-1000-8000-00805F9B34FB)
            89.698483: [rfcomm_cind_resp_cb:140]:  indicator strings: ("call",(0,1)),("callsetup",(0-3)),("service",(0-1)),("signal",(0-5)),("roam",(0,1)),("battchg",(0-5)),("callheld",(0-2))
            89.698568: BTMG[bt_test_hfp_event_cb:423]:  event HFP_CIND
            89.802776: [rfcomm_slc_resp_cb:123]:  ++
            89.802854: BTMG[bt_test_hfp_event_cb:423]:  event HFP_CONNECT
            90.088349: BTMG[bt_test_hfp_event_cb:423]:  event HFP_CIEV
            90.089534: BTMG[bt_test_hfp_event_cb:423]:  event HFP_CIEV
            AGENT: Authorize Service (74:15:75:F3:25:92, 0000110d-0000-1000-8000-00805f9b34fb)
            92.772168: BTMG[bt_test_a2dp_sink_connection_state_cb:272]:  A2DP sink connected with device: 74:15:75:F3:25:92
            92.806233: BTMG[bt_test_avrcp_play_state_cb:326]:  BT palying music paused with device: 74:15:75:F3:25:92
            92.806317: BTMG[bt_test_a2dp_sink_audio_state_cb:281]:  A2DP sink audio suspended with device: 74:15:75:F3:25:92
            104.896559: BTMG[bt_test_avrcp_play_state_cb:324]:  BT palying music playing with device: 74:15:75:F3:25:92
            104.896645: BTMG[bt_test_a2dp_sink_audio_state_cb:285]:  A2DP sink audio started with device: 74:15:75:F3:25:92
            105.123050: [bt_a2dp_sink_start:550]:  a2dp sink start transmit.
            [  103.869544] [SNDCODEC][sunxi_card_hw_params][620]:stream_flag: 0
            108.333289: BTMG[bt_test_avrcp_play_state_cb:326]:  BT palying music paused with device: 74:15:75:F3:25:92
            108.333374: BTMG[bt_test_a2dp_sink_audio_state_cb:281]:  A2DP sink audio suspended with device: 74:15:75:F3:25:92
            111.935371: [bt_a2dp_sink_stop:576]:  a2dp sink stop transmit.
            [  124.761718] [SNDCODEC][sunxi_check_hs_detect_status][191]:plugin --> switch:3
            129.032725: BTMG[bt_test_avrcp_play_state_cb:324]:  BT palying music playing with device: 74:15:75:F3:25:92
            129.032816: BTMG[bt_test_a2dp_sink_audio_state_cb:285]:  A2DP sink audio started with device: 74:15:75:F3:25:92
            129.265234: [bt_a2dp_sink_start:550]:  a2dp sink start transmit.
            129.765237: [aw_pcm_write:478]:  An underrun has occurred
            
            root@TinaLinux:/#
            root@TinaLinux:/#
            
            root@TinaLinux:/# ps
              PID USER       VSZ STAT COMMAND
                1 root      2092 S    /sbin/procd
                2 root         0 SW   [kthreadd]
                3 root         0 IW<  [rcu_gp]
                4 root         0 IW<  [rcu_par_gp]
                5 root         0 IW   [kworker/0:0-mm_]
                6 root         0 IW<  [kworker/0:0H-kb]
                7 root         0 IW   [kworker/u2:0-fl]
                8 root         0 IW<  [mm_percpu_wq]
                9 root         0 SW   [ksoftirqd/0]
               10 root         0 IW   [rcu_preempt]
               11 root         0 SW   [kdevtmpfs]
               12 root         0 SW   [rcu_tasks_kthre]
               13 root         0 IW   [kworker/0:1-eve]
               14 root         0 SW   [oom_reaper]
               15 root         0 IW<  [writeback]
               16 root         0 SW   [kcompactd0]
               46 root         0 IW<  [kblockd]
               47 root         0 SW   [ion_system_heap]
               48 root         0 SW   [watchdogd]
               49 root         0 IW<  [cfg80211]
               50 root         0 SW   [kswapd0]
               52 root         0 SW   [vsync proc 0]
               53 root         0 SW   [vsync proc 1]
               54 root         0 IW   [kworker/u2:1-ev]
               57 root         0 IW<  [uas]
               58 root         0 SW   [irq/56-mmc0]
               59 root         0 SW   [irq/178-4020000]
               60 root         0 SW   [irq/57-mmc1]
               61 root         0 IW   [kworker/0:2-rcu]
               62 root         0 IW<  [mmc_complete]
               63 root         0 IW   [kworker/0:3-eve]
               64 root         0 IW<  [kworker/0:1H-kb]
               65 root         0 IW<  [rpmsg_hifi0]
               66 root         0 IW<  [ipv6_addrconf]
               67 root         0 SW<  [krfcommd]
               68 root         0 SW   [hdmi proc]
               69 root         0 SW   [cec thread]
               70 root         0 SW   [irq/5-2-0038]
               71 root         0 DW   [usb-hardware-sc]
               76 root         0 IW<  [kworker/0:2H]
              121 root      1660 S    /sbin/ubusd
              133 root      2684 S    /bin/ash --login
              134 root      1624 S    /sbin/askfirst /bin/ash --login
              240 root      289m S    /bin/adbd -D
              242 root      2096 S    /usr/sbin/dbus-daemon --system
              243 root         0 IW<  [goodix_wq]
              333 root         0 SW   [xradio_etf]
              334 root         0 IW<  [xradio_wq]
              335 root         0 IW<  [xradio_spare_wq]
              336 root         0 SW   [xradio_proc]
              343 root         0 SW   [xradio_bh]
              353 root         0 IW<  [goodix_wq]
              486 root      1760 S    /sbin/netifd
              500 root      9848 S    /usr/sbin/MtpDaemon -D
              527 root      1496 S    /sbin/swupdate-progress -w
              554 root      2708 S<   /usr/sbin/ntpd -n -N -S /usr/sbin/ntpd-hotplug -p nt
              563 root     85548 S    tt
              590 root         0 IW   [kworker/u2:2-ev]
              600 root      606m S    bt_test
              613 root      1628 S    hciattach -n ttyS1 xradio
              648 root         0 IW<  [kworker/u3:0-hc]
              649 root         0 IW<  [kworker/u3:1-hc]
              650 root         0 IW<  [kworker/u3:2-hc]
              662 root      3668 S    /usr/bin/bluetoothd -n
              674 root      309m S    bluealsa -p a2dp-sink -p hfp-hf
              703 root      2684 R    ps
            root@TinaLinux:/# 
            

            看一下 *** /etc/asound.conf ***

            # D1-H
            # audiocodec
            
            ctl.!default {
                type hw
                card audiocodec
            }
            
            pcm.!default {
                type asym
                playback.pcm "Playback"
                capture.pcm "CaptureMic"
            }
            
            pcm.PlaybackEQ {
                type plug
                slave.pcm {
                    type awequal
                    slave.pcm "Playback"
                    config_file "/etc/awequal.conf"
                    tuning_support false
                    verbose true
                }
                slave.rate 48000
                slave.format S16_LE
                slave.channels 2
            }
            
            pcm.Playback {
                type plug
                slave.pcm {
                    type softvol
                    slave.pcm PlaybackDmix
                    control {
                        name "Soft Volume Master"
                        card audiocodec
                    }
                    min_dB -51.0
                    max_dB 0.0
                    resolution 256
                }
                slave.channels 1
                slave.rate 48000
                slave.format S16_LE
            }
            
            pcm.PlaybackDmix {
                type plug
                slave.pcm {
                    type dmix
                    ipc_key 1111
                    ipc_perm 0666
                    slave {
                        pcm "hw:audiocodec"
                        format S16_LE
                        rate 48000
                        channels 2
                        period_size 960
                        periods 4
                    }
                }
            }
            
            pcm.PlaybackHDMI {
                type plug
                slave.pcm {
                    type dmix
                    ipc_key 1111
                    ipc_perm 0666
                    slave {
                        pcm "hw:sndhdmi"
                        format S16_LE
                        rate 48000
                        channels 2
                        period_size 960
                        periods 4
                    }
                }
            }
            
            pcm.Capture {
                type hw
                card audiocodec
            }
            
            #AEC: ADC1, ADC2
            pcm.CaptureAec {
                type plug
                slave.pcm {
                    type dsnoop
                    ipc_key 2222
                    ipc_perm 0666
                    slave {
                        pcm "hw:audiocodec"
                        rate 16000
                        channels 3
                        period_size 960
                        periods 4
                    }
                }
                ttable.0.0 1
                ttable.1.1 1
            }
            
            #headset MIC: ADC3
            pcm.CaptureMic {
                type plug
                slave.pcm {
                    type dsnoop
                    ipc_key 2222
                    ipc_perm 0666
                    slave {
                        pcm "hw:audiocodec"
                        rate 16000
                        channels 3
                        period_size 960
                        periods 4
                    }
                }
                ttable.0.2 1
            }
            
            pcm.CaptureDsnoop {
                type plug
                slave.pcm {
                    type dsnoop
                    ipc_key 2222
                    ipc_perm 0666
                    slave {
                        pcm "hw:audiocodec"
                        rate 16000
                        channels 3
                        period_size 960
                        periods 4
                    }
                }
            }
            
            pcm.CaptureDmic {
                type plug
                slave.pcm {
                    type dsnoop
                    ipc_key 2223
                    ipc_perm 0666
                    slave {
                        pcm "hw:snddmic"
                        rate 16000
                        channels 6
                        period_size 960
                        periods 4
                    }
                }
            }
            
            pcm.CaptureMulti1 {
                type plug
                slave.pcm {
                    type multi
                    slaves {
                        a { pcm "CaptureDmic" channels 6 }
                        b { pcm "CaptureDsnoop" channels 3 }
                    }
                    bindings {
                        0 { slave a channel 0 }
                        1 { slave a channel 1 }
                        2 { slave a channel 2 }
                        3 { slave a channel 3 }
                        4 { slave a channel 4 }
                        5 { slave a channel 5 }
                        6 { slave b channel 0 }
                        7 { slave b channel 1 }
                        8 { slave b channel 2 }
                    }
                }
                ttable.0.0 1
                ttable.1.1 1
                ttable.2.2 1
                ttable.3.3 1
                ttable.4.4 1
                ttable.5.5 1
                ttable.6.6 1
                ttable.7.7 1
                ttable.8.8 1
            }
            
            1 Reply Last reply Reply Quote Share 0
            • tigger
              tigger LV 7 last edited by

              网上抄来一个 /etc/asound.conf 搞定:

              pcm.!default {
                      type hw
                      card 0
              }
               
              ctl.!default {
                      type hw           
                      card 0
              }
              

              把V3s RTL8723D 当蓝牙喇叭成功:

              root@TinaLinux:/# 1254.646041: [bt_manager_init:212]:  enable default profile from bt config.
              1254.646179: [bt_manager_enable:400]:  bt manager version:Version:3.0.1.202012201630,builed time:Dec 29 2020-02:46:30
              1254.646199: [bt_test_status_cb:71]:  bt is turnning on.
              [ 1040.680371] sunxi-bt soc@03000000:bt@0: block state already is 1
              [ 1041.697694] sunxi-bt soc@03000000:bt@0: set block: 0
              1259.223757: [bt_profile_global_init:356]:  start bluealsa :1 times
              1259.754977: [bt_test_adapter_power_state_cb:41]:  Turn on bt successfully
              1260.226341: [bt_test_status_cb:61]:  BT is ON
              1276.712300: [bt_test_dev_add_cb:104]:  address:74:15:75:F3:25:92,name:memory,class:5898764,icon:phone,address type:public,rssi:0
              AGENT: Authorize Service (74:15:75:F3:25:92, 0000110d-0000-1000-8000-00805f9b34fb)
              1283.160852: [bt_test_a2dp_sink_connection_state_cb:261]:  A2DP sink connected with device: 74:15:75:F3:25:92
              1283.197730: [bt_test_avrcp_play_state_cb:315]:  BT palying music paused with device: 74:15:75:F3:25:92
              1283.197786: [bt_test_a2dp_sink_audio_state_cb:270]:  A2DP sink audio suspended with device: 74:15:75:F3:25:92
              1284.845902: [bt_test_avrcp_play_state_cb:313]:  BT palying music playing with device: 74:15:75:F3:25:92
              1284.845961: [bt_test_a2dp_sink_audio_state_cb:274]:  A2DP sink audio started with device: 74:15:75:F3:25:92
              1285.086664: [bt_a2dp_sink_start:523]:  a2dp sink start transmit.
              1285.656253: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1285.713279: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1285.766153: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1285.844472: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1285.892388: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1285.953642: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1286.035757: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1286.111549: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1286.173635: [comsumer_thread:623]:  fifo is empty:a2sin(0,9)
              1286.253223: [comsumer_thread:623]:  fifo is empty:a2sin(0,10)
              1286.301144: [comsumer_thread:623]:  fifo is empty:a2sin(0,11)
              1286.359971: [comsumer_thread:623]:  fifo is empty:a2sin(0,12)
              1286.419953: [comsumer_thread:623]:  fifo is empty:a2sin(0,13)
              1286.495765: [comsumer_thread:623]:  fifo is empty:a2sin(0,14)
              1286.555757: [comsumer_thread:623]:  fifo is empty:a2sin(0,15)
              1286.603660: [comsumer_thread:623]:  fifo is empty:a2sin(0,16)
              1286.665002: [comsumer_thread:623]:  fifo is empty:a2sin(0,17)
              1286.665037: [comsumer_thread:629]:  time_ms[1008] empty_count:17
              1286.689455: [comsumer_thread:603]:  trigger cache timeout:a2sin,17
              1287.203218: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1287.256174: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1287.318641: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1287.398262: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1287.447394: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1287.526990: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1287.579885: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1287.660723: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1287.733244: [comsumer_thread:623]:  fifo is empty:a2sin(0,9)
              1287.733278: [comsumer_thread:629]:  time_ms[1068] empty_count:9
              1287.746930: [comsumer_thread:603]:  trigger cache timeout:a2sin,9
              1288.227081: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1288.287419: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1288.348633: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1288.409879: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1288.488201: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1288.536106: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1288.617001: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1288.664951: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1288.725033: [comsumer_thread:623]:  fifo is empty:a2sin(0,9)
              1288.784952: [comsumer_thread:623]:  fifo is empty:a2sin(0,10)
              1288.784986: [comsumer_thread:629]:  time_ms[1051] empty_count:10
              1288.811884: [comsumer_thread:603]:  trigger cache timeout:a2sin,10
              1289.330775: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1289.387371: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1289.446093: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1289.523133: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1289.568587: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1289.612615: [bt_test_avrcp_play_state_cb:315]:  BT palying music paused with device: 74:15:75:F3:25:92
              1289.612661: [bt_test_a2dp_sink_audio_state_cb:270]:  A2DP sink audio suspended with device: 74:15:75:F3:25:92
              1289.645855: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1289.696187: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1289.780759: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1289.829858: [comsumer_thread:623]:  fifo is empty:a2sin(0,9)
              1289.829898: [comsumer_thread:629]:  time_ms[1044] empty_count:9
              1289.856901: [comsumer_thread:603]:  trigger cache timeout:a2sin,9
              1290.337631: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1290.416520: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1290.482814: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1290.544094: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1290.605250: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1290.670228: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1290.731476: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1290.792856: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1290.853993: [comsumer_thread:623]:  fifo is empty:a2sin(0,9)
              1290.854030: [comsumer_thread:629]:  time_ms[1024] empty_count:9
              1290.865197: [comsumer_thread:603]:  trigger cache timeout:a2sin,9
              1291.152339: [bt_test_avrcp_play_state_cb:313]:  BT palying music playing with device: 74:15:75:F3:25:92
              1291.152387: [bt_test_a2dp_sink_audio_state_cb:274]:  A2DP sink audio started with device: 74:15:75:F3:25:92
              1291.379649: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1291.446926: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1291.494895: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1291.573089: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1291.624874: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1291.686024: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1291.756920: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1291.828077: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1291.896786: [comsumer_thread:623]:  fifo is empty:a2sin(0,9)
              1291.896822: [comsumer_thread:629]:  time_ms[1042] empty_count:9
              1291.910662: [comsumer_thread:603]:  trigger cache timeout:a2sin,9
              1292.488120: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1292.544883: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1292.621918: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1292.667233: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1292.725985: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1292.801900: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1292.847247: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1292.905978: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1292.906013: [comsumer_thread:629]:  time_ms[1009] empty_count:8
              1292.931757: [comsumer_thread:603]:  trigger cache timeout:a2sin,8
              1293.483365: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1293.559337: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1293.639311: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1293.711864: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1293.785523: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1293.856797: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1293.934280: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1293.934317: [comsumer_thread:629]:  time_ms[1028] empty_count:7
              1293.954296: [comsumer_thread:603]:  trigger cache timeout:a2sin,7
              1294.254936: [bt_test_avrcp_play_state_cb:315]:  BT palying music paused with device: 74:15:75:F3:25:92
              1294.254994: [bt_test_a2dp_sink_audio_state_cb:270]:  A2DP sink audio suspended with device: 74:15:75:F3:25:92
              1294.433923: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1294.498502: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1294.577289: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1294.638832: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1294.701367: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1294.766449: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1294.827614: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1294.888863: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1294.955101: [comsumer_thread:623]:  fifo is empty:a2sin(0,9)
              1294.955142: [comsumer_thread:629]:  time_ms[1020] empty_count:9
              1294.965079: [comsumer_thread:603]:  trigger cache timeout:a2sin,9
              1295.444981: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1295.520122: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1295.580078: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1295.638825: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1295.700094: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1295.780060: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1295.840061: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1295.912631: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1295.996331: [comsumer_thread:623]:  fifo is empty:a2sin(0,9)
              1295.996365: [comsumer_thread:629]:  time_ms[1041] empty_count:9
              1296.005049: [comsumer_thread:603]:  trigger cache timeout:a2sin,9
              1296.099593: [bt_test_avrcp_play_state_cb:313]:  BT palying music playing with device: 74:15:75:F3:25:92
              1296.099641: [bt_test_a2dp_sink_audio_state_cb:274]:  A2DP sink audio started with device: 74:15:75:F3:25:92
              1296.487764: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1296.549734: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1296.627997: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1296.680905: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1296.759232: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1296.807124: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1296.868367: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1296.946720: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1296.997115: [comsumer_thread:623]:  fifo is empty:a2sin(0,9)
              1296.997151: [comsumer_thread:629]:  time_ms[1000] empty_count:9
              1297.031639: [comsumer_thread:603]:  trigger cache timeout:a2sin,9
              1297.541671: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1297.615468: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1297.686651: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1297.735838: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1297.797093: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1297.875399: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1297.923339: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1297.984618: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1298.045846: [comsumer_thread:623]:  fifo is empty:a2sin(0,9)
              1298.045887: [comsumer_thread:629]:  time_ms[1048] empty_count:9
              1298.074099: [comsumer_thread:603]:  trigger cache timeout:a2sin,9
              1298.573532: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1298.644125: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1298.689552: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1298.748329: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1298.807091: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1298.865832: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1298.924592: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1298.983323: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1299.043288: [comsumer_thread:623]:  fifo is empty:a2sin(0,9)
              1299.102041: [comsumer_thread:623]:  fifo is empty:a2sin(0,10)
              1299.102081: [comsumer_thread:629]:  time_ms[1056] empty_count:10
              1299.126632: [comsumer_thread:603]:  trigger cache timeout:a2sin,10
              1299.667980: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1299.724964: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1299.782459: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1299.839954: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1299.883252: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1299.940792: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1299.998275: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1300.059594: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1300.118270: [comsumer_thread:623]:  fifo is empty:a2sin(0,9)
              1300.118306: [comsumer_thread:629]:  time_ms[1016] empty_count:9
              1300.144051: [comsumer_thread:603]:  trigger cache timeout:a2sin,9
              1300.649364: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1300.700776: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1300.781616: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1300.829478: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1300.888259: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1300.948246: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1301.024091: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1301.073228: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1301.135726: [comsumer_thread:623]:  fifo is empty:a2sin(0,9)
              1301.135762: [comsumer_thread:629]:  time_ms[1017] empty_count:9
              1301.160409: [comsumer_thread:603]:  trigger cache timeout:a2sin,9
              1301.701207: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1301.751972: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1301.811975: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1301.871969: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1301.930750: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1301.974871: [bt_test_avrcp_play_state_cb:315]:  BT palying music paused with device: 74:15:75:F3:25:92
              1301.974919: [bt_test_a2dp_sink_audio_state_cb:270]:  A2DP sink audio suspended with device: 74:15:75:F3:25:92
              1301.990809: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1302.069247: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1302.115773: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1302.618809: [comsumer_thread:623]:  fifo is empty:a2sin(0,9)
              1302.618863: [comsumer_thread:629]:  time_ms[1483] empty_count:9
              1302.642359: [comsumer_thread:603]:  trigger cache timeout:a2sin,9
              1302.851466: [bt_test_avrcp_play_state_cb:313]:  BT palying music playing with device: 74:15:75:F3:25:92
              1302.851517: [bt_test_a2dp_sink_audio_state_cb:274]:  A2DP sink audio started with device: 74:15:75:F3:25:92
              1303.120182: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1303.181995: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1303.259025: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1303.305690: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1303.364392: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1303.423168: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1303.481894: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1303.540716: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1303.600668: [comsumer_thread:623]:  fifo is empty:a2sin(0,9)
              1303.659398: [comsumer_thread:623]:  fifo is empty:a2sin(0,10)
              1303.659440: [comsumer_thread:629]:  time_ms[1040] empty_count:10
              1303.683983: [comsumer_thread:603]:  trigger cache timeout:a2sin,10
              1304.163816: [bt_test_avrcp_play_state_cb:315]:  BT palying music paused with device: 74:15:75:F3:25:92
              1304.163865: [bt_test_a2dp_sink_audio_state_cb:270]:  A2DP sink audio suspended with device: 74:15:75:F3:25:92
              1304.191536: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1304.240912: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1304.300767: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1304.375250: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1304.433559: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1304.491061: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1304.548562: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1304.622330: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1304.704824: [comsumer_thread:623]:  fifo is empty:a2sin(0,9)
              1304.704861: [comsumer_thread:629]:  time_ms[1045] empty_count:9
              1304.727293: [comsumer_thread:603]:  trigger cache timeout:a2sin,9
              1305.197973: [bt_test_avrcp_play_state_cb:313]:  BT palying music playing with device: 74:15:75:F3:25:92
              1305.198023: [bt_test_a2dp_sink_audio_state_cb:274]:  A2DP sink audio started with device: 74:15:75:F3:25:92
              1305.213913: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1305.292536: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1305.359859: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1305.422301: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1305.494173: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1305.558934: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1305.625218: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1305.675651: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1305.755192: [comsumer_thread:623]:  fifo is empty:a2sin(0,9)
              1305.755230: [comsumer_thread:629]:  time_ms[1050] empty_count:9
              1305.768953: [comsumer_thread:603]:  trigger cache timeout:a2sin,9
              1306.292658: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1306.346830: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1306.422637: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1306.470601: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1306.555192: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1306.627670: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1306.698913: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1306.771419: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1306.771454: [comsumer_thread:629]:  time_ms[1016] empty_count:8
              1306.793908: [comsumer_thread:603]:  trigger cache timeout:a2sin,8
              1307.267699: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1307.355168: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1307.427615: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1307.503876: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1307.577626: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1307.650169: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1307.705599: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1307.766809: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1307.848830: [comsumer_thread:623]:  fifo is empty:a2sin(0,9)
              1307.848867: [comsumer_thread:629]:  time_ms[1077] empty_count:9
              1307.862635: [comsumer_thread:603]:  trigger cache timeout:a2sin,9
              1308.389815: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1308.503041: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1308.587707: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1308.633021: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1308.691755: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1308.749288: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1308.809260: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1308.866764: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1308.866799: [comsumer_thread:629]:  time_ms[1017] empty_count:8
              1308.890066: [comsumer_thread:603]:  trigger cache timeout:a2sin,8
              1309.379073: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1309.435535: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1309.525110: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1309.608812: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1309.685073: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1309.771347: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1309.855068: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1309.900463: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1309.900500: [comsumer_thread:629]:  time_ms[1033] empty_count:8
              1309.923812: [comsumer_thread:603]:  trigger cache timeout:a2sin,8
              1309.983926: [bt_test_avrcp_play_state_cb:315]:  BT palying music paused with device: 74:15:75:F3:25:92
              1309.983972: [bt_test_a2dp_sink_audio_state_cb:270]:  A2DP sink audio suspended with device: 74:15:75:F3:25:92
              1310.439194: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1310.509658: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1310.572133: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1310.633390: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1311.212146: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1311.212194: [comsumer_thread:629]:  time_ms[1311] empty_count:5
              1311.289617: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1311.360873: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1311.435878: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1311.518380: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1311.588376: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1311.775494: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1311.827103: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1311.908346: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1311.969609: [comsumer_thread:623]:  fifo is empty:a2sin(0,9)
              1312.034597: [comsumer_thread:623]:  fifo is empty:a2sin(0,10)
              1312.095846: [comsumer_thread:623]:  fifo is empty:a2sin(0,11)
              1312.157099: [comsumer_thread:623]:  fifo is empty:a2sin(0,12)
              1312.222086: [comsumer_thread:623]:  fifo is empty:a2sin(0,13)
              1312.222123: [comsumer_thread:629]:  time_ms[1009] empty_count:13
              1312.232067: [comsumer_thread:603]:  trigger cache timeout:a2sin,13
              1312.714332: [comsumer_thread:623]:  fifo is empty:a2sin(0,1)
              1312.785856: [comsumer_thread:623]:  fifo is empty:a2sin(0,2)
              1312.844570: [comsumer_thread:623]:  fifo is empty:a2sin(0,3)
              1312.905829: [comsumer_thread:623]:  fifo is empty:a2sin(0,4)
              1312.967059: [comsumer_thread:623]:  fifo is empty:a2sin(0,5)
              1313.029580: [comsumer_thread:623]:  fifo is empty:a2sin(0,6)
              1313.095810: [comsumer_thread:623]:  fifo is empty:a2sin(0,7)
              1313.157072: [comsumer_thread:623]:  fifo is empty:a2sin(0,8)
              1313.631313: [bt_a2dp_sink_stop:549]:  a2dp sink stop transmit.
              
              M 1 Reply Last reply Reply Quote Share 0
              • YuzukiTsuru
                柚木 鉉 LV 9 last edited by

                阿这,我以为是V3s当mp3播放给蓝牙音箱,还奇怪RTL8723也可以pcm

                tigger sora1874 2 Replies Last reply Reply Quote Share 0
                • tigger
                  tigger LV 7 @YuzukiTsuru last edited by

                  @yuzukitsuru
                  a2dp source 理论上也可以,晚些我试一试。

                  1 Reply Last reply Reply Quote Share 0
                  • tigger
                    tigger LV 7 last edited by

                    学习 alsa 配置: alsa 配置文件asound.conf

                    1.介绍
                    笔者在博客《Alsa调试下篇:应用篇》中一文中提到过asound.conf这个配置文件,在本文中,笔者将为你详细介绍这个文件。在《Alsa调试上篇:编译篇》中通过交叉编译我们可以得到alsa-lib的一些文件,在usr/local/shar/alsa/中有一个文件叫---alsa.conf

                    alsa官网解释:https://www.alsa-project.org/main/index.php/Asoundrc

                    这个文件在调用snd_pcm_open这个api函数时,会被加载同时解析。接下来看看官网给的解释:

                    Why asoundrc?

                    What is it good for, why do I want one?
                    
                    Neither the user-side .asoundrc nor the asound.conf configuration files are required for ALSA to work properly. Most applications will work without them. These files are used to allow extra functionality, such as routing and sample-rate conversion, through the alsa-lib layer. The actual reason that most applications will work without these user-side custom config files is that usually a default install of alsa-lib provides a sufficiently capable setup consisting of hierarchical config files (which always make use of the standard .asoundrc format syntax as well), which are specifically capable of supporting certain soundcard brands each. Thus, let's start with a quick overview of how ALSA config file framework evaluation is composed, globally:
                    
                    Global view of ALSA config file framework, executive summary
                    The alsa-lib package (at least on Debian libasound2-data 1.0.27) provides the /usr/share/alsa/alsa.conf file as the main entry point. That file is responsible for including the full list of potential .asoundrc-format-type files on the system. It contains a reference to the ALSA "DATADIR" (Debian: /usr/share/alsa/). It continues by loading the DATADIR's cards/aliases.conf file: that one defines translation mappings from the kernel driver's sound card name (as listed at /proc/asound/cards, or aplay -Ll) to a "more detailed" description string. That "more detailed name" of a sound card then gets used to lookup a corresponding card-specific config file at DATADIR/cards/CARD.conf. And THAT card-specific file then attempts to provide a maximally elegant sound setup for its specific card brand, by compensating for various limitations of cards (e.g. use dmix to combat single-stream playback only, or stereo downmix to lessen a mono-output-only restriction). Finally (to support those cases where the standard setup of a soundcard is deficient/lacking, or custom plugin setup is desired), alsa.conf loads a system-global custom settings file /etc/asound.conf and a per-user custom settings file ~/.asoundrc.
                    
                    So, the objective should be to achieve having the common alsa-lib configuration file framework enhanced by default in the best possible manner for each specific soundcard brand, to avoid the need of creating manually customized config files in all standard cases.
                    
                    With this global overview done and cared for, let's have a look at the actual configuration format of alsa-lib files.
                    

                    上面的主要说明点:

                    .asoundrc和asound.conf的引入提供用户定制化
                    /usr/share/alsa/alsa.conf为alsa-api的主要入口点

                    2. asound.conf的作用

                    asound.conf允许对声卡或者设备进行更高级的控制,提供访问alsa-lib中的pcm插件方法,允许你做更多的复杂的控制,比如可以把声卡组合成一个或者多声卡访问多个I/O。

                    3.Default plugin

                    pcm.!default {
                    	type hw
                    	card 0
                    }
                     
                    ctl.!default {
                    	type hw           
                    	card 0
                    }
                    

                    关键字default定义在alsa-lib中,将会访问hw:0,0声卡。

                    aplay -D default test.wav  (== aplay -Dhw:0,0 test.wav)
                    

                    4.Plugin
                    在alsa中,pcm插件扩展pcm设备的功能和特性。这些插件自动处理诸如命令设备,采样率转换,通道之间的采样复制,写入文件,为多个输入/输出(未采样同步)加入声卡/设备,使用多通道声卡/设备以及其他可能留给你的开发任务,详细的plugin和选项的完整列表:http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html

                    4.1rate_convert

                    pcm.rate_convert {
                    	type rate
                    	slave {
                    		pcm
                    		rate 48000
                    	}
                    }
                    

                    调用这个接口,比如之前44.1k的采样频率将会转换为48khz。

                    更复杂的用法:

                    type plug             	# Format adjusted PCM
                    slave STR               # Slave name (see pcm_slave)
                    # or
                    slave {                 # Slave definition
                    	pcm STR         # Slave PCM name
                    	# or
                    	pcm { }         # Slave PCM definition
                    	[format STR]    # Slave format (default nearest) or "unchanged"
                    	[channels INT]  # Slave channels (default nearest) or "unchanged"
                    	[rate INT]      # Slave rate (default nearest) or "unchanged"
                    }
                    route_policy STR 	# route policy for automatic ttable generation
                          	                # STR can be 'default', 'average', 'copy', 'duplicate'
                                           # average: result is average of input channels
                                          	# copy: only first channels are copied to destination
                                          	# duplicate: duplicate first set of channels
                                           # default: copy policy, except for mono capture - sum
                    ttable {               # Transfer table (bidimensional compound of 
                                           # cchannels * schannels numbers)
                    	CCHANNEL {
                    		SCHANNEL REAL     # route value (0.0 ... 1.0)
                    	}
                    }
                    pcm_slave.sl3 {
                    	pcm "hw:1,0"
                    	format S16_LE
                    	channels 1
                    	rate 16000
                    }
                     
                    pcm.complex_convert {
                    	type plug
                    	slave sl3
                    }
                    4.2dmix
                    pcm.!default {
                    	type plug
                    	slave.pcm "dmixer"
                    }
                     
                    pcm.dmixer  {
                     	type dmix
                     	ipc_key 1024
                     	slave {
                    		pcm "hw:1,0"
                    		period_time 0
                    		period_size 1024
                    		buffer_size 4096
                    		rate 44100
                    	}
                    	bindings {
                    		0 0
                    		1 1
                    	}
                    }
                     
                    ctl.dmixer {
                    	type hw
                    	card 0
                    }
                    
                    aplay -f cd -D default test.wav
                    

                    4.3 dsnoop

                    pcm.mixin {
                    	type dsnoop
                    	ipc_key 5978293	# must be unique for all dmix plugins!!!!
                    	ipc_key_add_uid yes
                    	slave {
                    		pcm "hw:0,0"
                    		channels 2
                    		period_size 1024
                    		buffer_size 4096
                    		rate 44100
                    		periods 0 
                    		period_time 0
                    	}
                    	bindings {
                    		0 0
                    		0 1
                    	}
                    }
                    4.4 jack plugin
                    pcm.jackplug {
                    	type plug
                    	slave { pcm "jack" }
                    }
                     
                    pcm.jack {
                    	type jack
                    	playback_ports {
                    		0 alsa_pcm:playback_1
                    		1 alsa_pcm:playback_2
                    	}
                    	capture_ports {
                    		0 alsa_pcm:capture_1
                    		1 alsa_pcm:capture_2
                    	}
                    }
                    
                    aplay -Djackplug somefile
                    arecord -Djackplug somefile
                    

                    4.5Virtual multi channel devices
                      如果你想链接两个或者多个alsa设备,以便你有一个虚拟的多通道设备。

                    # create a virtual four-channel device with two sound devices:
                    # This is in fact two interleaved stereo streams in
                    # different memory locations, so JACK will complain that it
                    # cannot get mmap-based access. see below.
                     
                    pcm.multi {
                            type multi;
                            slaves.a.pcm "hw:0,0";
                            slaves.a.channels 2;
                            slaves.b.pcm "hw:1,0";
                            slaves.b.channels 2;
                            bindings.0.slave a;
                            bindings.0.channel 0;
                            bindings.1.slave a;
                            bindings.1.channel 1;
                            bindings.2.slave b;
                            bindings.2.channel 0;
                            bindings.3.slave b;
                            bindings.3.channel 1;
                    }
                     
                    # JACK will be unhappy if there is no mixer to talk to, so we set
                    # this to card 0. This could be any device but 0 is easy. 
                     
                    ctl.multi {
                            type hw;
                            card 0;
                    }
                     
                    # This creates a 4 channel interleaved pcm stream based on
                    # the multi device. JACK will work with this one.
                     
                    pcm.ttable {
                            type route;
                            slave.pcm "multi";
                            slave.channels 4;
                            ttable.0.0 1;
                            ttable.1.1 1;
                            ttable.2.2 1;
                            ttable.3.3 1;
                    }
                    # see above.
                    ctl.ttable {
                            type hw;
                            card 0;
                    }
                    
                    arecord -f S16_LE -r 44100 -c 4 -D multi | aplay -f S16_LE -r 44100 -c 4 -D multi
                    
                    1 Reply Last reply Reply Quote Share 0
                    • sora1874
                      sora1874 LV 5 @YuzukiTsuru last edited by

                      @yuzukitsuru BT一般都引出了pcm,但是音频与PCM无关,走的A2DP

                      YuzukiTsuru 1 Reply Last reply Reply Quote Share 0
                      • YuzukiTsuru
                        柚木 鉉 LV 9 @sora1874 last edited by

                        @sora1874 我这里用的xr829就是独立的pcm挂i2s上

                        1 Reply Last reply Reply Quote Share 0
                        • M
                          memory LV 7 @tigger last edited by

                          @tigger 在 V3s + RTL8723DS tina 执行 bt_test 蓝牙sink程序,发现本机声卡不出声,并且报以下错误 Couldn't open PCM:default 中说:

                          网上抄来一个 /etc/asound.conf 搞定:
                          pcm.!default {
                          type hw
                          card 0
                          }

                          ctl.!default {
                          type hw
                          card 0
                          }

                          D1s也遇到同样的问题,参考这个搞定!

                          1 Reply Last reply Reply Quote Share 0
                          • 1 / 1
                          • First post
                            Last post

                          Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

                          行为准则 | 用户协议 | 隐私权政策