I've verified that the audio is mono with:
speaker-test -t wav -c 2
I'm guessing pavucontrol has something to do with it:
$ pactl list
[...]
Source Output #0
Driver: protocol-native.c
Owner Module: 11
Client: 8
Source: 0
Sample Specification: float32le 1ch 25Hz
Channel Map: mono
Format: pcm, format.sample_format = "\"float32le\"" format.rate = "25" format.channels = "1" format.channel_map = "\"mono\""
Corked: no
Mute: no
Volume: mono: 65536 / 100% / 0.00 dB
balance 0.00
Buffer Latency: 22312 usec
Source Latency: 0 usec
Resample method: peaks
Properties:
media.name = "Peak detect"
application.name = "PulseAudio Volume Control"
native-protocol.peer = "UNIX socket client"
native-protocol.version = "32"
application.id = "org.PulseAudio.pavucontrol"
application.icon_name = "audio-card"
application.version = "3.0"
application.process.id = "18575"
application.process.user = "jon"
application.process.host = "ghost"
application.process.binary = "pavucontrol"
application.language = "en_US.UTF-8"
window.x11.display = ":0"
application.process.machine_id = "7d79eef4827a488e84b4ad33d37a5ed9"
application.process.session_id = "c8"
module-stream-restore.id = "source-output-by-application-id:org.PulseAudio.pavucontrol"
Source Output #10
Driver: protocol-native.c
Owner Module: 11
Client: 8
Source: 3
Sample Specification: float32le 1ch 25Hz
Channel Map: mono
Format: pcm, format.sample_format = "\"float32le\"" format.rate = "25" format.channels = "1" format.channel_map = "\"mono\""
Corked: no
Mute: no
Volume: mono: 65536 / 100% / 0.00 dB
balance 0.00
Buffer Latency: 0 usec
Source Latency: 522 usec
Resample method: peaks
Properties:
media.name = "Peak detect"
application.name = "PulseAudio Volume Control"
native-protocol.peer = "UNIX socket client"
native-protocol.version = "32"
application.id = "org.PulseAudio.pavucontrol"
application.icon_name = "audio-card"
application.version = "3.0"
application.process.id = "18575"
application.process.user = "jon"
application.process.host = "ghost"
application.process.binary = "pavucontrol"
application.language = "en_US.UTF-8"
window.x11.display = ":0"
application.process.machine_id = "7d79eef4827a488e84b4ad33d37a5ed9"
application.process.session_id = "c8"
module-stream-restore.id = "source-output-by-application-id:org.PulseAudio.pavucontrol"
[...]
I've tried uninstalling pavucontrol but I'm still having the issue.
Here is some more detail if it helps:
Output of aplay -L
Output of amixer
Output of pacmd list-cards
Output of pacmd list-sinks
Output of pacmd list-sink-inputs