element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      • Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Raspberry Pi
  • Products
  • More
Raspberry Pi
Raspberry Pi Forum PJSIP/PJSUA with Wolfson audio card
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Raspberry Pi to participate - click to join for free!
Featured Articles
Announcing Pi
Technical Specifications
Raspberry Pi FAQs
Win a Pi
Raspberry Pi Wishlist
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Not Answered
  • Replies 15 replies
  • Subscribers 677 subscribers
  • Views 3416 views
  • Users 0 members are here
  • raspberry
  • audio
  • wolfson_pi
  • pi
  • raspberry_pi
  • raspeberry_pi_accessories
  • pjsip
  • pjsua
Related

PJSIP/PJSUA with Wolfson audio card

Former Member
Former Member over 11 years ago

I am trying to get a SIP client running on my PI with Wolfson audio card.

 

I can use aplay and arecord, work great but when I set up a call with PJSUA I get the following errors:

 

07:14:34.698pjsua_app.c  ..Turning sound device ON
07:14:34.698pjsua_aud.c  ..Opening sound device PCM@16000/1/20ms
07:14:34.707 alsa_dev.c  ...ALSA lib pcm_hw.c:326:(snd_pcm_hw_hw_params) SNDRV_PCM_IOCTL_HW_PARAMS failed (-22): Invalid argument
07:14:34.707pjsua_app.c  ..Turning sound device ON
07:14:34.707pjsua_aud.c  ..Opening sound device PCM@44100/1/20ms
07:14:35.292ec0x14005a8  ...Echo suppressor created, clock_rate=44100, channel=1, samples per frame=882, tail length=200 ms, latency=100 ms

07:14:35.293  pjsua_media.c  .Call 0: initializing media..

07:14:35.297 alsa_dev.c  ALSA lib pcm_hw.c:587:(snd_pcm_hw_start) SNDRV_PCM_IOCTL_START failed (-12): Cannot allocate memory

 

Anyone that can guide me in the right direction on how to get this running?

 

Best Regards

  • Sign in to reply
  • Cancel
Parents
  • Former Member
    0 Former Member over 11 years ago

    I too have been bitten by the sample rate bug...

    I have modified my ~/.asoundrc quite a bit in order to be able to record 1-channel at 8kHz and 16kHz.

    I'm using ALSA's built-in re-sampling capabilities.

     

    This is not for those who like to enjoy HD audio! The sound card operates at 48kHz/16bit at all times.

    Everything is re-sampled and converted up or down as needed.

    --

    Ragnar

     

    #######################################################################
    #
    # Use libsamplerate instead of internal resampler.
    # You might have to: sudo apt-get install libasound2-plugins
    # Or just comment out the next line if the internal one is good enough for your needs.
    defaults.pcm.rate_converter "samplerate"
    
    ######################################################################
    #
    # Wolfson Audio Card for Raspberry Pi
    #
    pcm.wolfson_pi_soundcard {
        type hw
        card sndrpiwsp
        device 0
    }
    # Create a Master volume control
    pcm.softvol {
        type            softvol
        slave {
            pcm         "pduplex"
        }
        control {
            name        "Master"
            card        0
        }
    }
    
    pcm.!default  {
        type           asym
        playback.pcm   "plug:softvol"
        capture.pcm    "pduplex"
    }
    
    #####################################################################
    #
    # Mixing and resampling goodness :-)
    #
    # Several clients can record and play back simultaneously.
    # The dmix and dsnoop plugins operate at 48kHz by default, i.e. the sound card will be kept at 48kHz at all times.
    # All playback streams are converted to 2 channels/48kHz/16bit.
    # All recording streams are converted from the card's 2 channels/48kHz/16bit
    # to the requested number of channels, sample rate and bit depth.
    
    # We define one pcm device called "playmixer" for playback.
    pcm.playmixer {
            ipc_key 140324  # Any number will do, as long as it's unique in the system.
            ipc_key_add_uid true
            type dmix
            slave.pcm "wolfson_pi_soundcard"
    }
    
    # Define another one called "recmixer" for capture.
    # The sound card will run at 48kHz and input is resampled to the requested rate.
    pcm.recmixer {
            ipc_key 140325
            ipc_key_add_uid true
            type dsnoop
            slave.pcm "wolfson_pi_soundcard"
    }
    
    # Define a duplex device, with both in- and outputs.
    pcm.duplex {
            type asym
            playback.pcm "playmixer"
            capture.pcm "recmixer"
    }
    
    # Add a "plug" plugin for the above "duplex" device.
    # This is where all the converting takes place.
    # Sample rate, number of channels, bit depth.
    # By the way, who thought that "plug" was a good name for a plugin?
    #
    # Use this device for all your playback and recording resampling needs.
    pcm.pduplex {
            type plug
            slave.pcm "duplex"
    }
    
    # A ctl device to keep xmms happy
    ctl.pduplex {
            type hw
            card 0
    }
    
    # A DSP to keep the alsa-oss layer happy:
    pcm.dsp0 {
            type plug
            slave.pcm "duplex"
    }
    
    ctl.mixer0 {
            type hw
            card 0
    }

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 11 years ago in reply to Former Member

    HI Ragnar

     

    I use your .asoundrc, and the wolfson PI Card works, but I Can't reproduce the files this is the error

     

    root@raspberrypi:/home/pi/pjproject-2.2.1/pjsip-apps/bin# aplay PJSYSTEST_TESTREC.WAV               Playing WAVE 'PJSYSTEST_TESTREC.WAV' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono

    aplay: set_params:1145: Unable to install hw params:

    ACCESS:  RW_INTERLEAVED

    FORMAT:  S16_LE

    SUBFORMAT:  STD

    SAMPLE_BITS: 16

    FRAME_BITS: 16

    CHANNELS: 1

    RATE: 8000

    PERIOD_TIME: 125000

    PERIOD_SIZE: 1000

    PERIOD_BYTES: 2000

    PERIODS: 4

    BUFFER_TIME: 500000

    BUFFER_SIZE: 4000

    BUFFER_BYTES: 8000

    TICK_TIME: 0

     

    Can the Wolfson PI Audio Card play files with 8000hz, this is a critical point in the asterisk communication because the principal audio codecs run to 8000hz. do you know?

     

    I'm graceful with your answer

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Reply
  • Former Member
    0 Former Member over 11 years ago in reply to Former Member

    HI Ragnar

     

    I use your .asoundrc, and the wolfson PI Card works, but I Can't reproduce the files this is the error

     

    root@raspberrypi:/home/pi/pjproject-2.2.1/pjsip-apps/bin# aplay PJSYSTEST_TESTREC.WAV               Playing WAVE 'PJSYSTEST_TESTREC.WAV' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono

    aplay: set_params:1145: Unable to install hw params:

    ACCESS:  RW_INTERLEAVED

    FORMAT:  S16_LE

    SUBFORMAT:  STD

    SAMPLE_BITS: 16

    FRAME_BITS: 16

    CHANNELS: 1

    RATE: 8000

    PERIOD_TIME: 125000

    PERIOD_SIZE: 1000

    PERIOD_BYTES: 2000

    PERIODS: 4

    BUFFER_TIME: 500000

    BUFFER_SIZE: 4000

    BUFFER_BYTES: 8000

    TICK_TIME: 0

     

    Can the Wolfson PI Audio Card play files with 8000hz, this is a critical point in the asterisk communication because the principal audio codecs run to 8000hz. do you know?

     

    I'm graceful with your answer

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Children
  • Former Member
    0 Former Member over 11 years ago in reply to Former Member

    The card itself (or rather its drivers) cannot record or play back at 8 kHz.

    Using my .asoundrc you should be able to record and play back at any sample rate and bit depth.

     

    ragnar@ob3:~/tmp$ arecord -d 10 -f S16_LE -v testing16.wav

    Recording WAVE 'testing16.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono

    Plug PCM: Rate conversion PCM (48000, sformat=S16_LE)

    Converter: libsamplerate

    Protocol version: 10002

    Its setup is:

      stream : CAPTURE

      access : RW_INTERLEAVED

      format : S16_LE

      subformat : STD

      channels : 1

      rate : 8000

      exact rate : 8000 (8000/1)

      msbits : 16

      buffer_size : 3000

      period_size : 1000

      period_time : 125000

      tstamp_mode : NONE

      period_step : 1

      avail_min : 1000

      period_event : 0

      start_threshold : 1

      stop_threshold : 3000

      silence_threshold: 0

      silence_size : 0

      boundary : 196608000

    Slave: Route conversion PCM (sformat=S16_LE)

      Transformation table:

      0 <- 0*0.5 + 1*0.5

    Its setup is:

      stream : CAPTURE

      access : MMAP_INTERLEAVED

      format : S16_LE

      subformat : STD

      channels : 1

      rate : 48000

      exact rate : 48000 (48000/1)

      msbits : 16

      buffer_size : 18000

      period_size : 6000

      period_time : 125000

      tstamp_mode : NONE

      period_step : 1

      avail_min : 6000

      period_event : 0

      start_threshold : 6

      stop_threshold : 18000

      silence_threshold: 0

      silence_size : 0

      boundary : 1179648000

    Slave: Direct Snoop PCM

    Its setup is:

      stream : CAPTURE

      access : MMAP_INTERLEAVED

      format : S16_LE

      subformat : STD

      channels : 2

      rate : 48000

      exact rate : 48000 (48000/1)

      msbits : 16

      buffer_size : 18000

      period_size : 6000

      period_time : 125000

      tstamp_mode : NONE

      period_step : 1

      avail_min : 6000

      period_event : 0

      start_threshold : 6

      stop_threshold : 18000

      silence_threshold: 0

      silence_size : 0

      boundary : 1179648000

    Hardware PCM card 0 'snd_rpi_wsp' device 0 subdevice 0

    Its setup is:

      stream : CAPTURE

      access : MMAP_INTERLEAVED

      format : S16_LE

      subformat : STD

      channels : 2

      rate : 48000

      exact rate : 48000 (48000/1)

      msbits : 16

      buffer_size : 18000

      period_size : 6000

      period_time : 125000

      tstamp_mode : ENABLE

      period_step : 1

      avail_min : 6000

      period_event : 0

      start_threshold : 1

      stop_threshold : 1179648000

      silence_threshold: 0

      silence_size : 0

      boundary : 1179648000

      appl_ptr : 0

      hw_ptr : 0

     

     

     

    ragnar@ob3:~/tmp$ file testing16.wav

    testing16.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 8000 Hz

     

     

     

    ragnar@ob3:~/tmp$ aplay -v testing16.wav

    Playing WAVE 'testing16.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono

    Plug PCM: Soft volume PCM

    Control: Master

    min_dB: -51

    max_dB: 0

    resolution: 256

    Its setup is:

      stream : PLAYBACK

      access : RW_INTERLEAVED

      format : S16_LE

      subformat : STD

      channels : 1

      rate : 8000

      exact rate : 8000 (8000/1)

      msbits : 16

      buffer_size : 3000

      period_size : 1000

      period_time : 125000

      tstamp_mode : NONE

      period_step : 1

      avail_min : 1000

      period_event : 0

      start_threshold : 3000

      stop_threshold : 3000

      silence_threshold: 0

      silence_size : 0

      boundary : 196608000

    Slave: Plug PCM: Rate conversion PCM (48000, sformat=S16_LE)

    Converter: libsamplerate

    Protocol version: 10002

    Its setup is:

      stream : PLAYBACK

      access : MMAP_INTERLEAVED

      format : S16_LE

      subformat : STD

      channels : 1

      rate : 8000

      exact rate : 8000 (8000/1)

      msbits : 16

      buffer_size : 3000

      period_size : 1000

      period_time : 125000

      tstamp_mode : NONE

      period_step : 1

      avail_min : 1000

      period_event : 0

      start_threshold : 3000

      stop_threshold : 3000

      silence_threshold: 0

      silence_size : 0

      boundary : 196608000

    Slave: Route conversion PCM (sformat=S16_LE)

      Transformation table:

      0 <- 0

      1 <- 0

    Its setup is:

      stream : PLAYBACK

      access : MMAP_INTERLEAVED

      format : S16_LE

      subformat : STD

      channels : 1

      rate : 48000

      exact rate : 48000 (48000/1)

      msbits : 16

      buffer_size : 18000

      period_size : 6000

      period_time : 125000

      tstamp_mode : NONE

      period_step : 1

      avail_min : 6000

      period_event : 0

      start_threshold : 18000

      stop_threshold : 18000

      silence_threshold: 0

      silence_size : 0

      boundary : 1179648000

    Slave: Direct Stream Mixing PCM

    Its setup is:

      stream : PLAYBACK

      access : MMAP_INTERLEAVED

      format : S16_LE

      subformat : STD

      channels : 2

      rate : 48000

      exact rate : 48000 (48000/1)

      msbits : 16

      buffer_size : 18000

      period_size : 6000

      period_time : 125000

      tstamp_mode : NONE

      period_step : 1

      avail_min : 6000

      period_event : 0

      start_threshold : 18000

      stop_threshold : 18000

      silence_threshold: 0

      silence_size : 0

      boundary : 1179648000

    Hardware PCM card 0 'snd_rpi_wsp' device 0 subdevice 0

    Its setup is:

      stream : PLAYBACK

      access : MMAP_INTERLEAVED

      format : S16_LE

      subformat : STD

      channels : 2

      rate : 48000

      exact rate : 48000 (48000/1)

      msbits : 16

      buffer_size : 18000

      period_size : 6000

      period_time : 125000

      tstamp_mode : ENABLE

      period_step : 1

      avail_min : 6000

      period_event : 0

      start_threshold : 1

      stop_threshold : 1179648000

      silence_threshold: 0

      silence_size : 1179648000

      boundary : 1179648000

      appl_ptr : 0

      hw_ptr : 0

    ragnar@ob3:~/tmp$

     

     

    I notice that you are running aplay as root in your example.

    Have you put a copy of .asoundrc in root's home directory too? Every user needs its own copy.

    Or install a global one: Asoundrc - AlsaProject

    --

    Ragnar

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 11 years ago in reply to Former Member

    HI Ragnar

     

    Thanks for your answer, you are correct, the fail was the asoundrc doesn`t exist in the root folder

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube