Headphone jack switch sense is inverted: plugging in headphones disables headphone output

Bug #1824259 reported by Adam Novak
18
This bug affects 3 people
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Fix Released
Undecided
Hui Wang
Bionic
Fix Released
Undecided
Unassigned
Cosmic
Fix Released
Undecided
Unassigned
Disco
Fix Released
Undecided
Unassigned

Bug Description

[Impact]
On the LattePanda board, the headphone detection signal is not correct, it is
inverted: plugging in headphones disables headphone output

[Fix]
In the codec driver, there already is a fixup, just set the inv_jd1_1 to true.

[Test Case]
It is tested by the bug reporter, please refer to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1824259/comments/23

[Regression Risk]
Low. This fix is specific to a board which is defined by DMI strings.

My machine is a LattePanda board, which uses a "chtrt5645" device as a sound card. It has a single headphone output jack, which I think is a TRRS jack, with a mic input, such as is normally used on phones.

When I don't have headphones plugged in, the system thinks headphones *are* plugged in. Gnome Control Center shows my audio device as being headphones. If I insert a headphone connector partway into the jack, I can even get sound in the headphones.

But if I plug the headphones all the way in, the system decided that I have *un*plugged the headphones, and switches output over to "Speaker". The system doesn't actually have a speaker, only a headphone jack. And when the system switches over to "Speaker", I get no sound out of the headphones, even if I open "pavucontrol" and swap over to "Headphones (unplugged)" on the "Output Devices" tab.

This is what "pacmd"'s "list-cards" command says with my headphones *unplugged*:

2 card(s) available.
    index: 0
 name: <alsa_card.pci-0000_00_02.0-platform-hdmi-lpe-audio>
 driver: <module-alsa-card.c>
 owner module: 7
 properties:
  alsa.card = "1"
  alsa.card_name = "Intel HDMI/DP LPE Audio"
  alsa.long_card_name = "Intel HDMI/DP LPE Audio"
  alsa.driver_name = "snd_hdmi_lpe_audio"
  device.bus_path = "pci-0000:00:02.0-platform-hdmi-lpe-audio"
  sysfs.path = "/devices/pci0000:00/0000:00:02.0/hdmi-lpe-audio/sound/card1"
  device.bus = "pci"
  device.vendor.id = "8086"
  device.vendor.name = "Intel Corporation"
  device.product.id = "22b0"
  device.product.name = "Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Configuration Registers"
  device.string = "1"
  device.description = "Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Configuration Registers"
  module-udev-detect.discovered = "1"
  device.icon_name = "audio-card-pci"
 profiles:
  output:hdmi-stereo: Digital Stereo (HDMI) Output (priority 5900, available: no)
  output:hdmi-surround: Digital Surround 5.1 (HDMI) Output (priority 800, available: no)
  output:hdmi-surround71: Digital Surround 7.1 (HDMI) Output (priority 800, available: no)
  output:hdmi-stereo-extra1: Digital Stereo (HDMI 2) Output (priority 5700, available: no)
  output:hdmi-surround-extra1: Digital Surround 5.1 (HDMI 2) Output (priority 600, available: no)
  output:hdmi-surround71-extra1: Digital Surround 7.1 (HDMI 2) Output (priority 600, available: no)
  output:hdmi-stereo-extra2: Digital Stereo (HDMI 3) Output (priority 5700, available: no)
  output:hdmi-surround-extra2: Digital Surround 5.1 (HDMI 3) Output (priority 600, available: no)
  output:hdmi-surround71-extra2: Digital Surround 7.1 (HDMI 3) Output (priority 600, available: no)
  off: Off (priority 0, available: unknown)
 active profile: <off>
 ports:
  hdmi-output-0: HDMI / DisplayPort (priority 5900, latency offset 0 usec, available: no)
   properties:
    device.icon_name = "video-display"
  hdmi-output-1: HDMI / DisplayPort 2 (priority 5800, latency offset 0 usec, available: no)
   properties:
    device.icon_name = "video-display"
  hdmi-output-2: HDMI / DisplayPort 3 (priority 5700, latency offset 0 usec, available: no)
   properties:
    device.icon_name = "video-display"
    index: 1
 name: <alsa_card.platform-cht-bsw-rt5645>
 driver: <module-alsa-card.c>
 owner module: 8
 properties:
  alsa.card = "0"
  alsa.card_name = "chtrt5645"
  alsa.long_card_name = "AMICorporation-Defaultstring-Defaultstring-CherryTrailCR"
  alsa.driver_name = "snd_soc_sst_cht_bsw_rt5645"
  device.bus_path = "platform-cht-bsw-rt5645"
  sysfs.path = "/devices/pci0000:00/808622A8:00/cht-bsw-rt5645/sound/card0"
  device.form_factor = "internal"
  device.string = "0"
  device.description = "Built-in Audio"
  module-udev-detect.discovered = "1"
  device.icon_name = "audio-card"
 profiles:
  HiFi: Default (priority 8000, available: unknown)
  off: Off (priority 0, available: unknown)
 active profile: <HiFi>
 sinks:
  alsa_output.platform-cht-bsw-rt5645.HiFi__hw_chtrt5645__sink/#0: Built-in Audio Headphones + Speaker
 sources:
  alsa_output.platform-cht-bsw-rt5645.HiFi__hw_chtrt5645__sink.monitor/#0: Monitor of Built-in Audio Headphones + Speaker
  alsa_input.platform-cht-bsw-rt5645.HiFi__hw_chtrt5645__source/#1: Built-in Audio Headset Microphone + Internal Analog Microphone
 ports:
  [Out] Headphones: Headphones (priority 100, latency offset 0 usec, available: yes)
   properties:

  [Out] Speaker: Speaker (priority 100, latency offset 0 usec, available: no)
   properties:

  [In] HSMic: Headset Microphone (priority 100, latency offset 0 usec, available: yes)
   properties:

  [In] Mic: Internal Analog Microphone (priority 150, latency offset 0 usec, available: no)
   properties:

When I plug in the headphones, the entry for card 1 changes to:

    index: 1
 name: <alsa_card.platform-cht-bsw-rt5645>
 driver: <module-alsa-card.c>
 owner module: 8
 properties:
  alsa.card = "0"
  alsa.card_name = "chtrt5645"
  alsa.long_card_name = "AMICorporation-Defaultstring-Defaultstring-CherryTrailCR"
  alsa.driver_name = "snd_soc_sst_cht_bsw_rt5645"
  device.bus_path = "platform-cht-bsw-rt5645"
  sysfs.path = "/devices/pci0000:00/808622A8:00/cht-bsw-rt5645/sound/card0"
  device.form_factor = "internal"
  device.string = "0"
  device.description = "Built-in Audio"
  module-udev-detect.discovered = "1"
  device.icon_name = "audio-card"
 profiles:
  HiFi: Default (priority 8000, available: unknown)
  off: Off (priority 0, available: unknown)
 active profile: <HiFi>
 sinks:
  alsa_output.platform-cht-bsw-rt5645.HiFi__hw_chtrt5645__sink/#0: Built-in Audio Headphones + Speaker
 sources:
  alsa_output.platform-cht-bsw-rt5645.HiFi__hw_chtrt5645__sink.monitor/#0: Monitor of Built-in Audio Headphones + Speaker
  alsa_input.platform-cht-bsw-rt5645.HiFi__hw_chtrt5645__source/#1: Built-in Audio Headset Microphone + Internal Analog Microphone
 ports:
  [Out] Headphones: Headphones (priority 100, latency offset 0 usec, available: no)
   properties:

  [Out] Speaker: Speaker (priority 100, latency offset 0 usec, available: unknown)
   properties:

  [In] HSMic: Headset Microphone (priority 100, latency offset 0 usec, available: no)
   properties:

  [In] Mic: Internal Analog Microphone (priority 150, latency offset 0 usec, available: unknown)
   properties:

Note that the "Headphones" port is now "available: no".

PulseAudio is getting all these ports from Alsa's UCM (Use Case Manager) system, which has a bunch of config files that live in /usr/share/alsa/ucm. I tried editing /usr/share/alsa/ucm/chtrt5645/HiFi.conf to swap the enable and disable procedures for the headphones and the speakers, in hopes of convincing it to route audio out the headphone jack, but that didn't work.

This problem has affected me since at least Ubuntu 18.04. I've upgraded through 18.10 and to 19.04 today. All three releases have the same problem.

1. How is the PulseAudio/ALSA system determining whether headphones are plugged in or not?

2. How do I invert the sense of that test?

ProblemType: Bug
DistroRelease: Ubuntu 19.04
Package: libasound2 1.1.8-1
ProcVersionSignature: Ubuntu 5.0.0-8.9-generic 5.0.1
Uname: Linux 5.0.0-8-generic x86_64
ApportVersion: 2.20.10-0ubuntu26
Architecture: amd64
CurrentDesktop: ubuntu:GNOME
Date: Wed Apr 10 19:21:09 2019
InstallationDate: Installed on 2018-12-08 (123 days ago)
InstallationMedia: Ubuntu 18.04.1 LTS "Bionic Beaver" - Release amd64 (20180725)
ProcEnviron:
 TERM=xterm-256color
 PATH=(custom, no user)
 XDG_RUNTIME_DIR=<set>
 LANG=en_US.UTF-8
 SHELL=/bin/bash
SourcePackage: alsa-lib
UpgradeStatus: Upgraded to disco on 2019-04-11 (0 days ago)
---
ProblemType: Bug
ApportVersion: 2.20.10-0ubuntu27
Architecture: amd64
AudioDevicesInUse:
 USER PID ACCESS COMMAND
 /dev/snd/controlC0: anovak 3022 F.... pulseaudio
DistroRelease: Ubuntu 19.04
InstallationDate: Installed on 2018-12-08 (125 days ago)
InstallationMedia: Ubuntu 18.04.1 LTS "Bionic Beaver" - Release amd64 (20180725)
Lsusb:
 Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
 Bus 001 Device 003: ID 0bda:8152 Realtek Semiconductor Corp. RTL8152 Fast Ethernet Adapter
 Bus 001 Device 004: ID 2341:8036 Arduino SA Leonardo (CDC ACM, HID)
 Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. Hub
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
MachineType: Default string Default string
Package: linux (not installed)
ProcEnviron:
 TERM=xterm-256color
 PATH=(custom, no user)
 XDG_RUNTIME_DIR=<set>
 LANG=en_US.UTF-8
 SHELL=/bin/bash
ProcFB: 0 inteldrmfb
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-5.0.0-8-generic root=UUID=a40848aa-7225-4844-805d-e726c496e2a2 ro quiet splash vt.handoff=1
ProcVersionSignature: Ubuntu 5.0.0-8.9-generic 5.0.1
RelatedPackageVersions:
 linux-restricted-modules-5.0.0-8-generic N/A
 linux-backports-modules-5.0.0-8-generic N/A
 linux-firmware 1.178
RfKill:
 0: hci0: Bluetooth
  Soft blocked: no
  Hard blocked: no
Tags: disco
Uname: Linux 5.0.0-8-generic x86_64
UnreportableReason: This report is about a package that is not installed.
UpgradeStatus: Upgraded to disco on 2019-04-11 (2 days ago)
UserGroups: adm cdrom dip docker libvirt lpadmin plugdev pulse-access sambashare sudo
_MarkForUpload: False
dmi.bios.date: 05/15/2018
dmi.bios.vendor: American Megatrends Inc.
dmi.bios.version: DF-BI-7-S70CR200-CC55F-022-B
dmi.board.asset.tag: Default string
dmi.board.name: Cherry Trail CR
dmi.board.vendor: AMI Corporation
dmi.board.version: Default string
dmi.chassis.asset.tag: Default string
dmi.chassis.type: 9
dmi.chassis.vendor: Default string
dmi.chassis.version: Default string
dmi.modalias: dmi:bvnAmericanMegatrendsInc.:bvrDF-BI-7-S70CR200-CC55F-022-B:bd05/15/2018:svnDefaultstring:pnDefaultstring:pvrDefaultstring:rvnAMICorporation:rnCherryTrailCR:rvrDefaultstring:cvnDefaultstring:ct9:cvrDefaultstring:
dmi.product.family: Tablet
dmi.product.name: Default string
dmi.product.sku: Default string
dmi.product.version: Default string
dmi.sys.vendor: Default string

Revision history for this message
Adam Novak (interfect) wrote :
summary: - Headphone jack switch sense is inverted: pliugging in headphones
- disables headphone output
+ Headphone jack switch sense is inverted: plugging in headphones disables
+ headphone output
Revision history for this message
Adam Novak (interfect) wrote :

If I save the ALSA state with the headphones unplugged to a file:

sudo alsactl --file=settings-out.txt store

And then plug in the headphones and restore it:

sudo alsactl --file=settings-out.txt restore

I still get no sound. But then diffing the final state against the unplugged state did find this:

        control.175 {
                iface CARD
                name 'Headphone Jack'
- value false
+ value true
                comment {
                        access read
                        type BOOLEAN
                        count 1
                }
        }
        control.176 {
                iface CARD
                name 'Headset Mic Jack'
- value false
+ value true
                comment {
                        access read
                        type BOOLEAN
                        count 1
                }
        }

I need to convince ALSA to report/interpret those boolean jack states the other way around.

Revision history for this message
Adam Novak (interfect) wrote :

This may be a kernel driver bug, and a regression from 4.12. See http://www.lattepanda.com/topic-p24689.html?sid=1fa88916eb19dd9d65e0abd3ecbf6210#p24689

This may be a missing piece of platform data in the kernel that would tell it to invert jack detection on this particular board. I will try testing with the functionality added to the kernel in https://github.com/torvalds/linux/commit/4999b0214b05a08b42bbafcb29a0b9c413002d3f which lets you tinker with the platform data at runtime.

Revision history for this message
Adam Novak (interfect) wrote :

This is actually a kernel bug, in Linux. The issue is the absence of platform data for this particular board in the snd_soc_rt5645 module.

The issue can be worked around by creating /etc/modprobe.d/hacksound.conf with the following contents:

# Invert jack detection (1) and use detection mode 2 (2).
options snd_soc_rt5645 quirk=0x21

This takes advantage of the "quirk" option for the module, added in https://github.com/torvalds/linux/commit/4999b0214b05a08b42bbafcb29a0b9c413002d3f, which allows overriding the platform data it usually just has built into it about how audio jacks are hooked up on particular systems.

It looks like this board needs special system info added to sound/soc/codecs/rt5645.c, keyed on DMI data. The platform data would look something like:

static const struct rt5645_platform_data lattepanda_platform_data = {
 .jd_mode = 2,
 .inv_jd1_1 = true
};

Here's the DMI data for the motherboard; it's a bit generic. I can provide other DMI data to match on if needed.

Base Board Information
        Manufacturer: AMI Corporation
        Product Name: Cherry Trail CR
        Version: Default string
        Serial Number: Default string
        Asset Tag: Default string
        Features:
                Board is a hosting board
                Board is replaceable
        Location In Chassis: Default string
        Chassis Handle: 0x0003
        Type: Motherboard
        Contained Object Handles: 0

affects: alsa-lib (Ubuntu) → linux (Ubuntu)
Revision history for this message
Ubuntu Kernel Bot (ubuntu-kernel-bot) wrote : Missing required logs.

This bug is missing log files that will aid in diagnosing the problem. While running an Ubuntu kernel (not a mainline or third-party kernel) please enter the following command in a terminal window:

apport-collect 1824259

and then change the status of the bug to 'Confirmed'.

If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'.

This change has been made by an automated script, maintained by the Ubuntu Kernel Team.

Changed in linux (Ubuntu):
status: New → Incomplete
Revision history for this message
Adam Novak (interfect) wrote : AlsaInfo.txt

apport information

tags: added: apport-collected
description: updated
Revision history for this message
Adam Novak (interfect) wrote : CRDA.txt

apport information

Revision history for this message
Adam Novak (interfect) wrote : CurrentDmesg.txt

apport information

Revision history for this message
Adam Novak (interfect) wrote : IwConfig.txt

apport information

Revision history for this message
Adam Novak (interfect) wrote : Lspci.txt

apport information

Revision history for this message
Adam Novak (interfect) wrote : ProcCpuinfoMinimal.txt

apport information

Revision history for this message
Adam Novak (interfect) wrote : ProcInterrupts.txt

apport information

Revision history for this message
Adam Novak (interfect) wrote : ProcModules.txt

apport information

Revision history for this message
Adam Novak (interfect) wrote : PulseList.txt

apport information

Revision history for this message
Adam Novak (interfect) wrote : UdevDb.txt

apport information

Revision history for this message
Adam Novak (interfect) wrote : WifiSyslog.txt

apport information

Changed in linux (Ubuntu):
status: Incomplete → Confirmed
Revision history for this message
Adam Novak (interfect) wrote :

I set the bug to Confirmed, despite being the original reporter, because the bot told me to.

The Apport logs I posted are form the system with my workaround enabled. I also blacklisted the HDMI audio module, since I don't use HDMI audio, and I thought it might help. It didn't seem to, but I never unblacklisted it.

Revision history for this message
Hui Wang (hui.wang) wrote :

Please install this deb for kernel-5.0.0-8-generic, and remove quirk=0x21 for that module, reboot and redo the test.

In this deb, the codec driver of rt5645.c handles the comment #4. let us see test if it works or not.

dpkg -i this.deb
remove the quirk=0x21
reboot

thx.

Revision history for this message
Adam Novak (interfect) wrote :

Hello,

Thank you for looking into this.

I installed the DKMS module deb (which built itself against kernel 5.0.0-13, which is what the system is now updated to), commented out the quirk-setting line in my module config file, and rebooted.

I now have no sound; list-cards in pacmd shows me that it thinks the headphone output is unavailable when plugged in, again.

1 card(s) available.
    index: 0
 name: <alsa_card.platform-cht-bsw-rt5645>
 driver: <module-alsa-card.c>
 owner module: 7
 properties:
  alsa.card = "0"
  alsa.card_name = "chtrt5645"
  alsa.long_card_name = "AMICorporation-Defaultstring-Defaultstring-CherryTrailCR"
  alsa.driver_name = "snd_soc_sst_cht_bsw_rt5645"
  device.bus_path = "platform-cht-bsw-rt5645"
  sysfs.path = "/devices/pci0000:00/808622A8:00/cht-bsw-rt5645/sound/card0"
  device.form_factor = "internal"
  device.string = "0"
  device.description = "Built-in Audio"
  module-udev-detect.discovered = "1"
  device.icon_name = "audio-card"
 profiles:
  HiFi: Default (priority 8000, available: unknown)
  off: Off (priority 0, available: unknown)
 active profile: <HiFi>
 sinks:
  alsa_output.platform-cht-bsw-rt5645.HiFi__hw_chtrt5645__sink/#0: Built-in Audio Headphones + Speaker
 sources:
  alsa_output.platform-cht-bsw-rt5645.HiFi__hw_chtrt5645__sink.monitor/#0: Monitor of Built-in Audio Headphones + Speaker
  alsa_input.platform-cht-bsw-rt5645.HiFi__hw_chtrt5645__source/#1: Built-in Audio Headset Microphone + Internal Analog Microphone
 ports:
  [Out] Headphones: Headphones (priority 100, latency offset 0 usec, available: no)
   properties:

  [Out] Speaker: Speaker (priority 100, latency offset 0 usec, available: unknown)
   properties:

  [In] HSMic: Headset Microphone (priority 100, latency offset 0 usec, available: no)
   properties:

  [In] Mic: Internal Analog Microphone (priority 150, latency offset 0 usec, available: unknown)
   properties:

I'm going to put it back the way I had it (remove the deb and reinstate the quirk).

Is there anything else I can test? Or any more DMI info you would like? Is there something special I can do to make sure the module override actually loaded?

Thanks,
-Adam

Revision history for this message
Hui Wang (hui.wang) wrote :

Looks like put a wrong DMI matching string, could you upload the whole log of "sudo dmidecode".

Or "System Information" section.

Revision history for this message
Adam Novak (interfect) wrote :

Here's the whole `sudo dmidecode` output (attached).

Revision history for this message
Hui Wang (hui.wang) wrote :

Please install this deb, and do the test as the #18.

If it still doesn't work, please upload the dmesg after booting with this dkms.

thx.

Revision history for this message
Adam Novak (interfect) wrote :

OK, this second deb seems to solve my problem! The headphone jack state is detected correctly without the quirk! Thanks!

Revision history for this message
Hui Wang (hui.wang) wrote :

OK, sent the patch to review.

thx.

Hui Wang (hui.wang)
Changed in linux (Ubuntu):
assignee: nobody → Hui Wang (hui.wang)
description: updated
Changed in linux (Ubuntu Bionic):
status: New → In Progress
Changed in linux (Ubuntu Cosmic):
status: New → In Progress
Changed in linux (Ubuntu Disco):
status: New → In Progress
Changed in linux (Ubuntu Bionic):
status: In Progress → Fix Committed
Changed in linux (Ubuntu Disco):
status: In Progress → Fix Committed
Changed in linux (Ubuntu Cosmic):
status: In Progress → Fix Committed
Changed in linux (Ubuntu):
status: Confirmed → Fix Committed
Revision history for this message
Ubuntu Kernel Bot (ubuntu-kernel-bot) wrote :

This bug is awaiting verification that the kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-bionic' to 'verification-done-bionic'. If the problem still exists, change the tag 'verification-needed-bionic' to 'verification-failed-bionic'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

tags: added: verification-needed-bionic
Hui Wang (hui.wang)
tags: added: verification-done-bionic
removed: verification-needed-bionic
Revision history for this message
Ubuntu Kernel Bot (ubuntu-kernel-bot) wrote :

This bug is awaiting verification that the kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-disco' to 'verification-done-disco'. If the problem still exists, change the tag 'verification-needed-disco' to 'verification-failed-disco'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

tags: added: verification-needed-disco
Hui Wang (hui.wang)
tags: added: verification-done-disco
removed: verification-needed-disco
Revision history for this message
Ubuntu Kernel Bot (ubuntu-kernel-bot) wrote :

This bug is awaiting verification that the kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-cosmic' to 'verification-done-cosmic'. If the problem still exists, change the tag 'verification-needed-cosmic' to 'verification-failed-cosmic'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

tags: added: verification-needed-cosmic
Revision history for this message
Adam Novak (interfect) wrote : Re: [Bug 1824259] Re: Headphone jack switch sense is inverted: plugging in headphones disables headphone output
Download full text (11.9 KiB)

Do I have to downgrade my system from Dingo to Cosmic in order to test this in Cosmic, to keep my bug from being closed?

May 20, 2019 7:02 AM, "Ubuntu Kernel Bot" <email address hidden> wrote:

> This bug is awaiting verification that the kernel in -proposed solves
> the problem. Please test the kernel and update this bug with the
> results. If the problem is solved, change the tag 'verification-needed-
> cosmic' to 'verification-done-cosmic'. If the problem still exists,
> change the tag 'verification-needed-cosmic' to 'verification-failed-
> cosmic'.
>
> If verification is not done by 5 working days from today, this fix will
> be dropped from the source code, and this bug will be closed.
>
> See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how
> to enable and use -proposed. Thank you!
>
> ** Tags added: verification-needed-cosmic
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/1824259
>
> Title:
> Headphone jack switch sense is inverted: plugging in headphones
> disables headphone output
>
> Status in linux package in Ubuntu:
> Fix Committed
> Status in linux source package in Bionic:
> Fix Committed
> Status in linux source package in Cosmic:
> Fix Committed
> Status in linux source package in Disco:
> Fix Committed
>
> Bug description:
> [Impact]
> On the LattePanda board, the headphone detection signal is not correct, it is
> inverted: plugging in headphones disables headphone output
>
> [Fix]
> In the codec driver, there already is a fixup, just set the inv_jd1_1 to true.
>
> [Test Case]
> It is tested by the bug reporter, please refer to:
> https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1824259/comments/23
>
> [Regression Risk]
> Low. This fix is specific to a board which is defined by DMI strings.
>
> My machine is a LattePanda board, which uses a "chtrt5645" device as a sound card. It has a single
> headphone output jack, which I think is a TRRS jack, with a mic input, such as is normally used on
> phones.
>
> When I don't have headphones plugged in, the system thinks headphones
> *are* plugged in. Gnome Control Center shows my audio device as being
> headphones. If I insert a headphone connector partway into the jack, I
> can even get sound in the headphones.
>
> But if I plug the headphones all the way in, the system decided that I
> have *un*plugged the headphones, and switches output over to
> "Speaker". The system doesn't actually have a speaker, only a
> headphone jack. And when the system switches over to "Speaker", I get
> no sound out of the headphones, even if I open "pavucontrol" and swap
> over to "Headphones (unplugged)" on the "Output Devices" tab.
>
> This is what "pacmd"'s "list-cards" command says with my headphones
> *unplugged*:
>
> 2 card(s) available.
> index: 0
> name: <alsa_card.pci-0000_00_02.0-platform-hdmi-lpe-audio>
> driver: <module-alsa-card.c>
> owner module: 7
> properties:
> alsa.card = "1"
> alsa.card_name = "Intel HDMI/DP LPE Audio"
> alsa.long_card_name = "Intel HDMI/DP LPE Audio"
> alsa.driver_name = "snd_hdmi_lpe_audio"
> device.bus_path = "pci-0000:00:02.0-platform-hdm...

Revision history for this message
Terry Rudd (terrykrudd) wrote :

With chance of regression quite low, we will not remove this particular fix prior to release

Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (24.0 KiB)

This bug was fixed in the package linux - 5.0.0-16.17

---------------
linux (5.0.0-16.17) disco; urgency=medium

  * linux: 5.0.0-16.17 -proposed tracker (LP: #1829173)

  * shiftfs: lock security sensitive superblock flags (LP: #1827122)
    - SAUCE: shiftfs: lock down certain superblock flags

  * Please package libbpf (which is done out of the kernel src) in Debian [for
    19.10] (LP: #1826410)
    - SAUCE: tools -- fix add ability to disable libbfd

  * Disco update: 5.0.8 upstream stable release (LP: #1828415)
    - drm/i915/gvt: do not let pin count of shadow mm go negative
    - kbuild: pkg: use -f $(srctree)/Makefile to recurse to top Makefile
    - netfilter: nft_compat: use .release_ops and remove list of extension
    - netfilter: nf_tables: use-after-free in dynamic operations
    - netfilter: nf_tables: add missing ->release_ops() in error path of newrule()
    - hv_netvsc: Fix unwanted wakeup after tx_disable
    - ibmvnic: Fix completion structure initialization
    - ip6_tunnel: Match to ARPHRD_TUNNEL6 for dev type
    - ipv6: Fix dangling pointer when ipv6 fragment
    - ipv6: sit: reset ip header pointer in ipip6_rcv
    - kcm: switch order of device registration to fix a crash
    - net: ethtool: not call vzalloc for zero sized memory request
    - net-gro: Fix GRO flush when receiving a GSO packet.
    - net/mlx5: Decrease default mr cache size
    - netns: provide pure entropy for net_hash_mix()
    - net: rds: force to destroy connection if t_sock is NULL in
      rds_tcp_kill_sock().
    - net/sched: act_sample: fix divide by zero in the traffic path
    - net/sched: fix ->get helper of the matchall cls
    - qmi_wwan: add Olicard 600
    - r8169: disable ASPM again
    - sctp: initialize _pad of sockaddr_in before copying to user memory
    - tcp: Ensure DCTCP reacts to losses
    - tcp: fix a potential NULL pointer dereference in tcp_sk_exit
    - vrf: check accept_source_route on the original netdevice
    - net/mlx5e: Fix error handling when refreshing TIRs
    - net/mlx5e: Add a lock on tir list
    - nfp: validate the return code from dev_queue_xmit()
    - nfp: disable netpoll on representors
    - bnxt_en: Improve RX consumer index validity check.
    - bnxt_en: Reset device on RX buffer errors.
    - net: ip_gre: fix possible use-after-free in erspan_rcv
    - net: ip6_gre: fix possible use-after-free in ip6erspan_rcv
    - net: bridge: always clear mcast matching struct on reports and leaves
    - net: thunderx: fix NULL pointer dereference in nicvf_open/nicvf_stop
    - net: vrf: Fix ping failed when vrf mtu is set to 0
    - net: core: netif_receive_skb_list: unlist skb before passing to pt->func
    - r8169: disable default rx interrupt coalescing on RTL8168
    - net: mlx5: Add a missing check on idr_find, free buf
    - net/mlx5e: Update xoff formula
    - net/mlx5e: Update xon formula
    - kbuild: clang: choose GCC_TOOLCHAIN_DIR not on LD
    - lib/string.c: implement a basic bcmp
    - Revert "clk: meson: clean-up clock registration"
    - tty: mark Siemens R3964 line discipline as BROKEN
    - [Config]: remove CONFIG_R3964
    - [Config]: add CONFIG_LDISC_AUTOLOAD=y
    - tty: ldisc: add sysctl to p...

Changed in linux (Ubuntu Disco):
status: Fix Committed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (3.8 KiB)

This bug was fixed in the package linux - 4.15.0-51.55

---------------
linux (4.15.0-51.55) bionic; urgency=medium

  * linux: 4.15.0-51.55 -proposed tracker (LP: #1829219)

  * disable a.out support (LP: #1818552)
    - [Config] Disable a.out support

  * [UBUNTU] qdio: clear intparm during shutdown (LP: #1828394)
    - s390/qdio: clear intparm during shutdown

  * ftrace in ubuntu_kernel_selftests hang with Cosmic kernel (LP: #1826385)
    - kprobes/x86: Fix instruction patching corruption when copying more than one
      RIP-relative instruction

  * touchpad not working on lenovo yoga 530 (LP: #1787775)
    - Revert "UBUNTU: SAUCE: i2c:amd Depends on ACPI"
    - Revert "UBUNTU: SAUCE: i2c:amd move out pointer in union i2c_event_base"
    - Revert "UBUNTU: SAUCE: i2c:amd I2C Driver based on PCI Interface for
      upcoming platform"
    - i2c: add helpers to ease DMA handling
    - i2c: add a message flag for DMA safe buffers
    - i2c: add extra check to safe DMA buffer helper
    - i2c: Add drivers for the AMD PCIe MP2 I2C controller
    - [Config] Update config for AMD MP2 I2C driver
    - [Config] Update I2C_AMD_MP2 annotations

  * tm-unavailable in powerpc/tm failed on Bionic Power9 (LP: #1813129)
    - selftests/powerpc: Check for pthread errors in tm-unavailable
    - selftests/powerpc: Skip tm-unavailable if TM is not enabled

  * cp_abort in powerpc/context_switch from ubunut_kernel_selftests failed on
    Bionic P9 (LP: #1813134)
    - selftests/powerpc: Remove redundant cp_abort test

  * bionic/linux: completely remove snapdragon files from sources (LP: #1827880)
    - [Packaging] remove snapdragon dead files
    - [Config] update configs after snapdragon removal

  * The noise keeps occurring when Headset is plugged in on a Dell machine
    (LP: #1827972)
    - ALSA: hda/realtek - Fixed Dell AIO speaker noise

  * Geneve tunnels don't work when ipv6 is disabled (LP: #1794232)
    - geneve: correctly handle ipv6.disable module parameter

  * There are 4 HDMI/Displayport audio output listed in sound setting without
    attach any HDMI/DP monitor (LP: #1827967)
    - ALSA: hda/hdmi - Read the pin sense from register when repolling
    - ALSA: hda/hdmi - Consider eld_valid when reporting jack event

  * Headphone jack switch sense is inverted: plugging in headphones disables
    headphone output (LP: #1824259)
    - ASoC: rt5645: Headphone Jack sense inverts on the LattePanda board

  * CTAUTO:DevOps:860.50:devops4fp1:Error occurred during LINUX Dmesg error
    Checking for all LINUX clients for devops4p10 (LP: #1766201)
    - SAUCE: integrity: downgrade error to warning

  * Screen freeze after resume from S3 when HDMI monitor plugged on Dell
    Precision 7740 (LP: #1825958)
    - PCI: Restore resized BAR state on resume

  * potential memory corruption on arm64 on dev release (LP: #1827437)
    - driver core: Postpone DMA tear-down until after devres release

  * powerpc/pmu/ebb test in ubuntu_kernel_selftest failed with "error while
    loading shared libraries" on Bionic/Cosmic PowerPC (LP: #1812805)
    - selftests/powerpc/pmu: Link ebb tests with -no-pie

  * unnecessary request_queue freeze (LP: #1815733)
    - block: av...

Read more...

Changed in linux (Ubuntu Bionic):
status: Fix Committed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package linux - 4.18.0-21.22

---------------
linux (4.18.0-21.22) cosmic; urgency=medium

  * linux: 4.18.0-21.22 -proposed tracker (LP: #1829186)

  * disable a.out support (LP: #1818552)
    - [Config] Turn off a.out support

  * ftrace in ubuntu_kernel_selftests hang with Cosmic kernel (LP: #1826385)
    - kprobes/x86: Fix instruction patching corruption when copying more than one
      RIP-relative instruction

  * touchpad not working on lenovo yoga 530 (LP: #1787775)
    - Revert "UBUNTU: SAUCE: i2c:amd Depends on ACPI"
    - Revert "UBUNTU: SAUCE: i2c:amd move out pointer in union i2c_event_base"
    - Revert "UBUNTU: SAUCE: i2c:amd I2C Driver based on PCI Interface for
      upcoming platform"
    - i2c: add extra check to safe DMA buffer helper
    - i2c: Add drivers for the AMD PCIe MP2 I2C controller
    - [Config] Update config for AMD MP2 I2C driver
    - [Config] Update I2C_AMD_MP2 annotations

  * Geneve tunnels don't work when ipv6 is disabled (LP: #1794232)
    - geneve: correctly handle ipv6.disable module parameter

  * There are 4 HDMI/Displayport audio output listed in sound setting without
    attach any HDMI/DP monitor (LP: #1827967)
    - ALSA: hda/hdmi - Read the pin sense from register when repolling
    - ALSA: hda/hdmi - Consider eld_valid when reporting jack event

  * Headphone jack switch sense is inverted: plugging in headphones disables
    headphone output (LP: #1824259)
    - ASoC: rt5645: Headphone Jack sense inverts on the LattePanda board

  * CTAUTO:DevOps:860.50:devops4fp1:Error occurred during LINUX Dmesg error
    Checking for all LINUX clients for devops4p10 (LP: #1766201)
    - SAUCE: integrity: downgrade error to warning

  * potential memory corruption on arm64 on dev release (LP: #1827437)
    - driver core: Postpone DMA tear-down until after devres release

  * powerpc/pmu/ebb test in ubuntu_kernel_selftest failed with "error while
    loading shared libraries" on Bionic/Cosmic PowerPC (LP: #1812805)
    - selftests/powerpc/pmu: Link ebb tests with -no-pie

  * unnecessary request_queue freeze (LP: #1815733)
    - block: avoid setting nr_requests to current value
    - block: avoid setting none scheduler if it's already none

  * Kprobe event string type argument failed in ftrace from
    ubuntu_kernel_selftests on B/C i386 (LP: #1825780)
    - selftests/ftrace: Fix kprobe string testcase to not probe notrace function

  * False positive test result in run_netsocktests from net in
    ubuntu_kernel_selftest (LP: #1825777)
    - selftests/net: correct the return value for run_netsocktests

 -- Stefan Bader <email address hidden> Wed, 15 May 2019 13:18:36 +0200

Changed in linux (Ubuntu Cosmic):
status: Fix Committed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (24.0 KiB)

This bug was fixed in the package linux - 5.0.0-16.17

---------------
linux (5.0.0-16.17) disco; urgency=medium

  * linux: 5.0.0-16.17 -proposed tracker (LP: #1829173)

  * shiftfs: lock security sensitive superblock flags (LP: #1827122)
    - SAUCE: shiftfs: lock down certain superblock flags

  * Please package libbpf (which is done out of the kernel src) in Debian [for
    19.10] (LP: #1826410)
    - SAUCE: tools -- fix add ability to disable libbfd

  * Disco update: 5.0.8 upstream stable release (LP: #1828415)
    - drm/i915/gvt: do not let pin count of shadow mm go negative
    - kbuild: pkg: use -f $(srctree)/Makefile to recurse to top Makefile
    - netfilter: nft_compat: use .release_ops and remove list of extension
    - netfilter: nf_tables: use-after-free in dynamic operations
    - netfilter: nf_tables: add missing ->release_ops() in error path of newrule()
    - hv_netvsc: Fix unwanted wakeup after tx_disable
    - ibmvnic: Fix completion structure initialization
    - ip6_tunnel: Match to ARPHRD_TUNNEL6 for dev type
    - ipv6: Fix dangling pointer when ipv6 fragment
    - ipv6: sit: reset ip header pointer in ipip6_rcv
    - kcm: switch order of device registration to fix a crash
    - net: ethtool: not call vzalloc for zero sized memory request
    - net-gro: Fix GRO flush when receiving a GSO packet.
    - net/mlx5: Decrease default mr cache size
    - netns: provide pure entropy for net_hash_mix()
    - net: rds: force to destroy connection if t_sock is NULL in
      rds_tcp_kill_sock().
    - net/sched: act_sample: fix divide by zero in the traffic path
    - net/sched: fix ->get helper of the matchall cls
    - qmi_wwan: add Olicard 600
    - r8169: disable ASPM again
    - sctp: initialize _pad of sockaddr_in before copying to user memory
    - tcp: Ensure DCTCP reacts to losses
    - tcp: fix a potential NULL pointer dereference in tcp_sk_exit
    - vrf: check accept_source_route on the original netdevice
    - net/mlx5e: Fix error handling when refreshing TIRs
    - net/mlx5e: Add a lock on tir list
    - nfp: validate the return code from dev_queue_xmit()
    - nfp: disable netpoll on representors
    - bnxt_en: Improve RX consumer index validity check.
    - bnxt_en: Reset device on RX buffer errors.
    - net: ip_gre: fix possible use-after-free in erspan_rcv
    - net: ip6_gre: fix possible use-after-free in ip6erspan_rcv
    - net: bridge: always clear mcast matching struct on reports and leaves
    - net: thunderx: fix NULL pointer dereference in nicvf_open/nicvf_stop
    - net: vrf: Fix ping failed when vrf mtu is set to 0
    - net: core: netif_receive_skb_list: unlist skb before passing to pt->func
    - r8169: disable default rx interrupt coalescing on RTL8168
    - net: mlx5: Add a missing check on idr_find, free buf
    - net/mlx5e: Update xoff formula
    - net/mlx5e: Update xon formula
    - kbuild: clang: choose GCC_TOOLCHAIN_DIR not on LD
    - lib/string.c: implement a basic bcmp
    - Revert "clk: meson: clean-up clock registration"
    - tty: mark Siemens R3964 line discipline as BROKEN
    - [Config]: remove CONFIG_R3964
    - [Config]: add CONFIG_LDISC_AUTOLOAD=y
    - tty: ldisc: add sysctl to p...

Changed in linux (Ubuntu):
status: Fix Committed → Fix Released
Revision history for this message
fabioamd87 (fabioamd87) wrote :

Good day, I'm experiencing this bug on Ubuntu 20.04.3 LTS.
My motherboard is AsRock 970 Extreme4

Thank you,
Fabio

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.