Alsa state a7

From Openmoko

Revision as of 19:40, 6 September 2009 by Unchqua (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Here it is - the alsa state to A7 version and Buzz fixed A5/A6: http://docs.openmoko.org/trac/raw-attachment/ticket/2121/gsmhandset.state.new

Just do in the Neo

mv /usr/share/openmoko/scenarios/gsmhandset.state /usr/share/openmoko/scenarios/gsmhandset.state.old
wget http://docs.openmoko.org/trac/raw-attachment/ticket/2121/gsmhandset.state.new -O /usr/share/openmoko/scenarios/gsmhandset.state

If the distro is using fso then check /etc/frameworkd.conf to check which directory contains the scenario files. For SHR this directory is /usr/share/shr/scenarii -- Vikas

Troubleshooting:

Although this statefile is supposed to be "the one" it seems it doesn't work perfectly for all models. Here are some hints you can try if you still have problems with audio during phonecalls:

  • In case the other end complains about a rustling noise (like a flee would sit in the mic and move around) try correcting the "Mono Playback Volume" down. I have changed the value in the file to 89 and the phonecalls are now clear as they should be (On buzz-fixed A5).
  • Some people reported it helps to set the Playbackvolume in FSO down a bit:

This will set the volume to 68%:

mdbus -s org.freesmartphone.ogsmd /org/freesmartphone/GSM/Device org.freesmartphone.GSM.Device.SetSpeakerVolume 68

To read the current value:

mdbus -s org.freesmartphone.ogsmd /org/freesmartphone/GSM/Device org.freesmartphone.GSM.Device.GetSpeakerVolume
  • If it still doesn't work try fiddling around with the "Speaker Volume" in your statefile.

I recommend the other way round: fiddle with the Speaker Playback Volume and leave the calypso control alone! -- PaulFertser

Audio Path Theory

Voice recorded from the microphone goes through a bunch of mixers and switchers to get to the GSM chip, where it goes out to the network. Recorded microphone sound is send back out from the GSM chip, and into the mixer, to be played on the speaker next to the GPS board.

For recorded voice, the path of mixers/switches from microphone to GSM chip is:

control.48 Mic2 Capture Volume
control.63 Mic Sidetone Mux
control.12 Mono Sidetone Playback Volume
control.77 Mono Mixer Sidetone Playback Sw
control.5  Mono Playback Volume 

Controls 63 and 77 are switches and mixers, so changing them is going to stop sound working. The trick to remember with recording sound is to start with the biggest signal possible and mess with it the least - ideally have large values initially for 48 and 12, and a smaller value for 5, particularly since there seem to be references to 5 being a gain step.

See here for excruciating amounts of detail, and pretty pictures: Neo_1973_audio_subsystem, particularly the Internal Codec Route section.

If volume is still too low, or sounds ok, but gets cut off, you need to change the noise cancellation settings. For FSO, this is set in

/etc/frameworkd.conf

on the phone, in the [ogsmd] section:

[ogsmd]
# if you have a ti_calypso, you can choose the dsp mode for audio enhancement. Valid values are:
#    "short-aec": Short Echo Cancellation (max)
#    "long-aec":  Long Echo Cancellation (max)
#    "long-aec:6db": Long Echo Cancellation (-6db)
#    "long-aec:12db": Long Echo Cancellation (-12db)
#    "long-aec:18db": Long Echo Cancellation (-18db)
#    "nr": Noise Reduction (max)
#    "nr:6db": Noise Reduction (-6db)
#    "nr:12db": Noise Reduction (-12db)
#    "nr:18db": Noise Reduction (-18db)
#    "aec+nr": Long Echo Cancellation (max) plus Noise Reduction (max) [default]
#    "none": No audio processing.
ti_calypso_dsp_mode = aec+nr

For my buzzfixed A6 phone, I've set:

 ti_calypso_dsp_mode = none

And that seems to stop voice being cut off.

The above bit is taken from here: [1], where there are a bunch other settings to be able to mess with.

Personal tools

Here it is - the alsa state to A7 version and Buzz fixed A5/A6: http://docs.openmoko.org/trac/raw-attachment/ticket/2121/gsmhandset.state.new

Just do in the Neo

mv /usr/share/openmoko/scenarios/gsmhandset.state /usr/share/openmoko/scenarios/gsmhandset.state.old
wget http://docs.openmoko.org/trac/raw-attachment/ticket/2121/gsmhandset.state.new -O /usr/share/openmoko/scenarios/gsmhandset.state

If the distro is using fso then check /etc/frameworkd.conf to check which directory contains the scenario files. For SHR this directory is /usr/share/shr/scenarii -- Vikas

Troubleshooting:

Although this statefile is supposed to be "the one" it seems it doesn't work perfectly for all models. Here are some hints you can try if you still have problems with audio during phonecalls:

  • In case the other end complains about a rustling noise (like a flee would sit in the mic and move around) try correcting the "Mono Playback Volume" down. I have changed the value in the file to 89 and the phonecalls are now clear as they should be (On buzz-fixed A5).
  • Some people reported it helps to set the Playbackvolume in FSO down a bit:

This will set the volume to 68%:

mdbus -s org.freesmartphone.ogsmd /org/freesmartphone/GSM/Device org.freesmartphone.GSM.Device.SetSpeakerVolume 68

To read the current value:

mdbus -s org.freesmartphone.ogsmd /org/freesmartphone/GSM/Device org.freesmartphone.GSM.Device.GetSpeakerVolume
  • If it still doesn't work try fiddling around with the "Speaker Volume" in your statefile.

I recommend the other way round: fiddle with the Speaker Playback Volume and leave the calypso control alone! -- PaulFertser

Audio Path Theory

Voice recorded from the microphone goes through a bunch of mixers and switchers to get to the GSM chip, where it goes out to the network. Recorded microphone sound is send back out from the GSM chip, and into the mixer, to be played on the speaker next to the GPS board.

For recorded voice, the path of mixers/switches from microphone to GSM chip is:

control.48 Mic2 Capture Volume
control.63 Mic Sidetone Mux
control.12 Mono Sidetone Playback Volume
control.77 Mono Mixer Sidetone Playback Sw
control.5  Mono Playback Volume 

Controls 63 and 77 are switches and mixers, so changing them is going to stop sound working. The trick to remember with recording sound is to start with the biggest signal possible and mess with it the least - ideally have large values initially for 48 and 12, and a smaller value for 5, particularly since there seem to be references to 5 being a gain step.

See here for excruciating amounts of detail, and pretty pictures: Neo_1973_audio_subsystem, particularly the Internal Codec Route section.

If volume is still too low, or sounds ok, but gets cut off, you need to change the noise cancellation settings. For FSO, this is set in

/etc/frameworkd.conf

on the phone, in the [ogsmd] section:

[ogsmd]
# if you have a ti_calypso, you can choose the dsp mode for audio enhancement. Valid values are:
#    "short-aec": Short Echo Cancellation (max)
#    "long-aec":  Long Echo Cancellation (max)
#    "long-aec:6db": Long Echo Cancellation (-6db)
#    "long-aec:12db": Long Echo Cancellation (-12db)
#    "long-aec:18db": Long Echo Cancellation (-18db)
#    "nr": Noise Reduction (max)
#    "nr:6db": Noise Reduction (-6db)
#    "nr:12db": Noise Reduction (-12db)
#    "nr:18db": Noise Reduction (-18db)
#    "aec+nr": Long Echo Cancellation (max) plus Noise Reduction (max) [default]
#    "none": No audio processing.
ti_calypso_dsp_mode = aec+nr

For my buzzfixed A6 phone, I've set:

 ti_calypso_dsp_mode = none

And that seems to stop voice being cut off.

The above bit is taken from here: [1], where there are a bunch other settings to be able to mess with.