wenxin-wang / PulseDroidRtp

Receive and play PulseAudio RTP stream on Android
48 stars 2 forks source link

Crash when I press play. #2

Closed microsuperman closed 3 years ago

microsuperman commented 3 years ago

Crashes to desktop when I press the play button. I have the default settings other then I did change the IP address to my Linux desktop PC. I am running Moto G7 Power with Android 10. My desktop is using PulseAudio Preferences to setup RTP.

wenxin-wang commented 3 years ago

Could you attach or paste the output of pactl list sinks, pactl list source-outputs and pactl list modules here? A screenshot of the app (before you press the play button) would help, too. I just read that you used the default settings so no need for screenshots.

Also, if you have time and know how to use adb logcat, could you give me a sample of adb logcat during the crash? It would be even better if you are willing to try out the debug version. This way I can get more info about the crash/exception. DO NOTICE that adb logcat may contain other app's output, though, so you don't have to do this if you are concerned about privacy.

GrbavaCigla commented 3 years ago

When I use PulseDroid app it works. But when I use this, it doesn't.

wenxin-wang commented 3 years ago

@GrbavaCigla Could you provide the output of commands that I listed in the comment above?

GrbavaCigla commented 3 years ago

Sorry, I forgot to put it last time logcat.log modules.log sinks.log pactl list source-outputs is empty

wenxin-wang commented 3 years ago

@GrbavaCigla It seems to me that module-rtp-send is not used. Could you try the setup in the README.md? I'll paste them here:

pactl unload-module module-null-sink
pactl unload-module module-rtp-send
pactl load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=48000
pactl load-module module-rtp-send source=rtp.monitor destination=224.0.0.56 port=4010 mtu=320
GrbavaCigla commented 3 years ago
Failed to unload module: Module module-null-sink not loaded
Failed to unload module: Module module-rtp-send not loaded
21
Failure: Module initialization failed
GrbavaCigla commented 3 years ago

I used this script: https://superuser.com/questions/605445/how-to-stream-my-gnu-linux-audio-output-to-android-devices-over-wi-fi

wenxin-wang commented 3 years ago

I used this script: https://superuser.com/questions/605445/how-to-stream-my-gnu-linux-audio-output-to-android-devices-over-wi-fi

pashare is for PulseDroid, which uses PulseAudio's module-simple-protocol-tcp module. This app uses module-rtp-send, which is a different module, so the script won't help you to get this app running.

Failure: Module initialization failed

Which linux distribution are you using? I will look up and see if there's any package missing on your system

wenxin-wang commented 3 years ago
Failed to unload module: Module module-null-sink not loaded
Failed to unload module: Module module-rtp-send not loaded
21
Failure: Module initialization failed

The first two errors can be ignored. It seems that the module exists on your system, and module-null-sink was successfully initialized. However module-rtp-send failed to load. Could you check pulseaudio's log and see if there's something suspicious? On my system (which uses systemd), I use journalctl --user -S '2020-11-08 00:00:00' -u pulseaudio >pulseaudio.log to get the log. If that command fails on your system, can you paste the output of uname -a here? (This will show the linux distribution you are using)

GrbavaCigla commented 3 years ago

My uname

Linux Rakija 5.8.18-gentoo #5 SMP Sat Nov 28 15:10:04 CET 2020 x86_64 AMD Ryzen 5 2600 Six-Core Processor AuthenticAMD GNU/Linux

Command I ran for logs:

grep -i "pulse" /var/log/syslog > pulseaudio.txt

Logs: pulseaudio.txt

wenxin-wang commented 3 years ago

Could you paste the output of the following commands?

equery files pulseaudio
emerge --info pulseaudio
GrbavaCigla commented 3 years ago

files.txt info.txt

wenxin-wang commented 3 years ago

So module-rtp-send exists on your system, and now I'm out of clues :| Could you try

pactl unload-module module-null-sink
pactl unload-module module-rtp-send
pactl load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=48000
pactl load-module module-rtp-send source=rtp.monitor

I want to check if the 4th command will succeed with default parameters.

If the first two command fails with "not loaded", it just means that the two modules are not currently loaded, and can be ignored

GrbavaCigla commented 3 years ago

4th command works

wenxin-wang commented 3 years ago

So no Failure: Module initialization failed, and just a number is printed? In such case you can adjust the config of the app to match the default parameter of module-rtp-send. From the source code, it seems the default port is 46000, default destination ip is 224.0.0.56, and default mtu is 1280.

GrbavaCigla commented 3 years ago

App still crashes

GrbavaCigla commented 3 years ago

I got it from F-Droid

wenxin-wang commented 3 years ago

Sorry, I didn't realize that you provided logcat.log. There was indeed a crash, where it seems that the app cannot bind a socket to the receiving ip address and port. I tried to reproduce the crash on a Redmi phone, but the app ran successfully. Here are some possible causes to the crash:

  1. Maybe the ROM of your phone requires additional steps to request for Internet access
  2. Maybe there was another app listening on the same port

Anyway, this app needs to handle such situations and at least provide more output to help me look into the problem. I will add more log, and give you another debug version to try, if you have time.

wenxin-wang commented 3 years ago

If you have time, could you try app-debug.zip, and paste the output of adb logcat here? It won't solve the problem, but just catch the exception and print the error message

GrbavaCigla commented 3 years ago

I will do that tomorrow, also I could break the app multiple times, it will ask me to save the logs so you don't have to look at everything

wenxin-wang commented 3 years ago

Close for now. Feel free to reopen the issue if the same thing happens again.