Sony Xperia X (suzu/F5121 & F5122)



  • @fredldotme
    No problem 🙂

    I'm trying to achieve 44.1 kHz as the default rate or find out why is resampler too slow. I'm not sure if it's pulseaudio server, droid module or qcom driver related or something else.



  • @fredldotme
    I think I find out why it's always using 48 kHz. It's related to qcom/audio/hal. According to this commit https://github.com/fredldotme/device-sony-common/commit/b3235f337a371d7746fe591e3adcaca99c90dc4f we are using qcom/audio/default/hal/audio_hw.c where adev_open_output_stream function is always assigning 48 kHz rate regardless of what we configure in audio_policy.conf/touch.pa:

    3065       out->sample_rate = out->config.rate
    

    newer version contains:

    5295       if (config->sample_rate == 0) {
    5296                   out->sample_rate = out->config.rate;
    5297               } else {
    5298                   out->sample_rate = config->sample_rate;
    5299       }
    

    Is there a chance to test patched version?



  • This post is deleted!


  • @c4pp4 you could build your own Halium image and test it that way. The build instructions are here: https://github.com/Halium/projectmanagement/issues/98

    Just build the systemimage, run simg2img, e2fsck and resize2fs on it and put it in /system/var/lib/lxc/android/system.img.



  • @fredldotme
    Thank you!



  • @fredldotme
    I've patched it and successfully built and tested.

    patch:

    diff -Nur a/hardware/qcom/audio/hal/audio_hw.c b/hardware/qcom/audio/hal/audio_hw.c
    --- a/hardware/qcom/audio/hal/audio_hw.c	2020-06-03 09:11:31.406960000 +0200
    +++ b/hardware/qcom/audio/hal/audio_hw.c	2020-06-03 23:34:16.000000000 +0200
    @@ -3033,6 +3033,8 @@
                     out->format = audio_format_from_pcm_format(out->config.format);
                 }
             }
    +        if (config->sample_rate != 0)
    +            out->config.rate = config->sample_rate;
             out->sample_rate = out->config.rate;
         }
         ALOGV("%s: Usecase(%s) config->format %#x  out->config.format %#x\n",
    

    adb shell pacmd list-sinks:

    2 sink(s) available.
      * index: 0
    	name: <sink.primary>
    	driver: <module-droid-card.c>
    	flags: HARDWARE DECIBEL_VOLUME LATENCY 
    	state: SUSPENDED
    	suspend cause: IDLE 
    	priority: 9000
    	volume: front-left: 65536 / 100% / 0,00 dB,   front-right: 65536 / 100% / 0,00 dB
    	        balance 0,00
    	base volume: 65536 / 100% / 0,00 dB
    	volume steps: 65537
    	muted: no
    	current latency: 0,00 ms
    	max request: 0 KiB
    	max rewind: 0 KiB
    	monitor source: 0
    	sample spec: s16le 2ch 44100Hz
    	channel map: front-left,front-right
    	             Stereo
    	used by: 0
    	linked by: 1
    	fixed latency: 10,00 ms
    	card: 0 <droid_card.primary>
    	module: 4
    	properties:
    		device.description = "Droid sink primary"
    		device.class = "sound"
    		device.api = "droid-hal"
    		droid.flags = "AUDIO_OUTPUT_FLAG_PRIMARY|AUDIO_OUTPUT_FLAG_FAST"
    		droid.hw_module = "primary"
    		device.icon_name = "audio-card"
    		droid.output.primary = "true"
    		droid.output.low_latency = "true"
    		droid.output.media_latency = "true"
    	ports:
    		output-earpiece: Output to earpiece (priority 200, latency offset 0 usec, available: yes)
    			properties:
    				
    		output-speaker: Output to speaker (priority 300, latency offset 0 usec, available: yes)
    			properties:
    				
    		output-wired_headset: Output to wired headset (priority 100, latency offset 0 usec, available: no)
    			properties:
    				
    		output-wired_headphone: Output to wired headphone (priority 100, latency offset 0 usec, available: no)
    			properties:
    				
    		output-bluetooth_sco: Output to bluetooth sco (priority 100, latency offset 0 usec, available: yes)
    			properties:
    				
    		output-sco_headset: Output to sco headset (priority 100, latency offset 0 usec, available: yes)
    			properties:
    				
    		output-sco_carkit: Output to sco carkit (priority 100, latency offset 0 usec, available: yes)
    			properties:
    				
    		output-aux_digital: Output to aux digital (priority 100, latency offset 0 usec, available: yes)
    			properties:
    				
    		output-speaker+wired_headphone: Output to speaker+wired headphone (priority 100, latency offset 0 usec, available: no)
    			properties:
    				
    		output-parking: Parking port (priority 50, latency offset 0 usec, available: yes)
    			properties:
    				
    	active port: <output-speaker>
    


  • @c4pp4 looks sane at first glance. It would be interesting to know how it behaves with different sample settings provided through the touch.pa file. Does it now allow forcing the sample rate that way? In that case even better, but it looks like it should work on all Sony devices.

    Would you like to prepare a PR for it, so it has your name in the commit history? 🙂



  • @fredldotme
    It should work on all devices using 'hardware/qcom/audio'. Now it takes default settings from pulseaudio (44.100 kHz) if it's not specified through /etc/pulse/daemon.conf. You can override it changing 'default-sample-rate' parameter. You can change the sampling rate through /etc/pulse/touch.pa as well using 'rate', 'sink_rate' or source_rate' parameter when loading module-droid-card-24.



  • @c4pp4 awesome stuff! Should give us more flexibility should the default not provide a sufficient audio experience. Will you prepare a PR for it? I'm currently off my normal setup, only carrying a backup of Halium 7.1 on a microSD card.



  • Thanks again for the great port, @fredldotme! I have been using the Xperia X as my daily driver for months already and I am pretty happy with it. I have been observing a number of issues, and before creating bug reports I would like to make sure they are not specific to this port and that there are no easy fixes:

    • Under "Updates" I see an "Ubuntu touch Version 320" update but when clicking on "Restart & install" nothing happens.
    • Sometimes when the screen has been locked and turned off for a long time the device takes ages (>10sec?) to wake up.
    • On openstreetmap.org I cannot scroll the map in Morph Browser. I am pretty sure this had been working before on the bq Aquarius E4.5.

    And a question: Is there any hope to get autofocus to work for the camera?



  • Hello!
    Are there any plans on moving to ubuntu 20.04, or this is not possible due to Xperia X's hardware?



  • @dan-socea We will move to 20.04 and the Xperia X should not have an issue for that, as its just about kernel version to be high enough for systemd to run.



  • @Flohack That is great to hear, that there is still some life left into this device.



  • I got a problem when playing music after the screen is turned off. When on BATTERY, the music is interrupted. After couple of seconds it's playing again and it's again interrupted. When the screen is turned on (still locked) the music is playing without problem. When on BATTERY and Wi-Fi is turned off, it's playing without problem. When on USB it's playing without problem regardless of Wi-Fi state. It's not only about music player. When I receive a message it vibrates but it plays sound after the screen is activated. Incoming call is without problem. Clean reinstalling via UBports installer didn't solve it. Can someone confirm it? Maybe it's caused by some of recent updates.



  • I can confirm "When on BATTERY, the music is interrupted. After couple of seconds it's playing again and it's again interrupted. When the screen is turned on (still locked) the music is playing without problem. When on BATTERY and Wi-Fi is turned off, it's playing without problem." and "When I receive a message it vibrates but it plays sound after the screen is activated. Incoming call is without problem."

    I have not tested more. And: no problem with the Apps: "Flas" and "Clound Music" .



  • @c4pp4 @eichenbast how are you playing the music?

    This is probably caused by the media-hub not keeping/aquiring a 'wakelock'.
    Flas probably works since it plays a stream (which is 1 track) for which the lock is acquired. (I don't know what Cloud Music is.)

    When charging or with screen on the phone does not go in sleep mode so the music plays fine. Some app or service preventing to go to sleep (for example by having a lock) also keeps the music playing fine.



  • @wdehoog said in Sony Xperia X (suzu/F5121 & F5122):

    how are you playing the music?

    I'm using preinstalled UBports Music app.



  • @c4pp4 Then I would expect the first track to be played ok (media-hub has the lock) and the next ones being 'interrupted' (media-hub) does not acquire a new lock for the next tracks).

    If I remember well you can see the locks being aquired/released in /var/log/repowerd.log.
    Something like requestSysState and clearSysState. Maybe it is worth checking to see if this is the issue.



  • @wdehoog said in Sony Xperia X (suzu/F5121 & F5122):

    Then I would expect the first track to be played ok

    No, it's interrupted immediately after the screen is turned off.

    /var/log/repowerd.log

    OK, I'll check it.



  • Please, where can I find changes applied via System Settings > Updates named "Ubuntu touch" with number e.g. 335, 336 etc.?


Log in to reply