Is a Librem 15 phone jack short user repairable?

My Librium 15 audio jack has come loose from the motherboard.
Is this something user-repairable, or does it require a new motherboard?

If I jiggle my headphones cord, I can get it to play audio.
The laptop speaker no longer plays when I unplug the headphones.

Are there any instructions on how to open the laptop up?
Is this a connector I can get to or is it part of the main board?
I know how to use a soldering iron.

The purpose for buying this laptop was to use it to watch youtube videos.
It’s now basically a brick.

2 Likes

there’s one for l13 - not sure if that would be of any help.
also you may try to use bluetooth headphones/speakers till you get your audio fixed

2 Likes

thanks for the quick reply.
laptop doesnt have blue tooth.
I have a USB blue tooth adapter,but it plugs into the headphone jack.

Since it thinks a headphone is plugged in (no laptop sound)
I doubt a usb headphone will work.

Thanks for link. That looks repairable. I’ll give it a shot tonight.

1 Like

@systemsplanet Sadly, this kind of malfunction is not covered by warranty (the issue can happen if you pull your headphones cord hard for example). I had the same problem on my L15v3, eventually I brought the daughter soundboard to a mobile phone repair shop, they managed to resolder the jack to the daughterboard and all is working again.

2 Likes

Sounds like a HW QA issue.

My laptop is physically mounted on a laptop tray with the headphone jack running to Sonos speakers. I never unplug it. It never leaves the tray.
It just jiggled lose from moving the tray arm. So it was definitely a weak solder joint.

2 Likes

usb BT should work, you may use sound mixer to select output device and profile, eg. pavucontrol

2 Likes

I’ve had this issue twice (the first time Purism was nice enough to send me a new daughterboard, although it seems now that is not an option if not covered by warranty), and right now I am looking at resoldering myself (it is surface mount and I think a trace may have delaminated so it will be tricky, but I have some experience).

It is clear why this happens when observing the situation: the daughterboard is not connected to the sidewall, so it does not lend support, but instead acts as a fulcrum in a first-class lever that a jack can accidentally use to pop the socket off the board. I am sure Purism has noticed this and would take it into account in future designs.

edit: I had luck for a while with https://ugreen.com/product/UGREEN_USB_to_Aux_Stereo_Audio_Adapter_Sound_Card_External_Converter-en.html although it is cheaply made and broke eventually too (interestingly, for a couple days before, it output audio in a minor key).

2 Likes

Makes perfect sense. I can see the jack moves more than it should.

A jack should be attached to the case. It should never rely on a motherboard as a mechanical connection. This is the type of stuff crappy companies use for planned obsolescence.

Just to clarify, the motherboard is a separate board to which the daughterboard attaches. Anyway, I agree and plan to use a tap and die or some other scheme to secure the socket to the case for my 15v3.

1 Like

I’m surprised it would support routing the the physical connector and USB at the same time, but I guess there are use cases.

Thanks for the image though I’m American (so my German is poor, ie non-existent)

Based on ArloJamesBarnes info, it doesn’t sound like it’s worth fixing, if the mechanical connection is a daughter board and not the case.

So I’ll order a USB to RCA input jack and call it quits.

1 Like

Thanks for the clarification.

So if I fix this, it will just break again eventually.
I’ll try the USB route and consider the headphone jack useless.

This one is $7 will be here tomorrow.
https://www.amazon.com/TROND-External-Adapter-Integrated-Microphone/dp/B07L56C28R/

1 Like

it’s interface to pulse-audio (hence PA VU control) and in pulse you may connect different sources (apps) to different sinks (ports):

[ruff@trx ~]$ pactl list sinks
Ziel #0
	Status: SUSPENDED
	Name: alsa_output.pci-0000_00_1b.0.analog-stereo
	Beschreibung: Internes Audio Analog Stereo
	Treiber: module-alsa-card.c
	Abtastwert-Angabe: s16le 2ch 44100Hz
	Kanalzuordnung: front-left,front-right
	Besitzer-Modul: 7
	Stumm: nein
	Lautstärke: front-left: 29456 /  45% / -20,84 dB,   front-right: 29456 /  45% / -20,84 dB
	        Verteilung 0,00
	Basis-Lautstärke: 65536 / 100% / 0,00 dB
	Quellen-Monitor: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
	Latenz: 0 usec, eingestellt 0 usec
	Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
	Eigenschaften:
		alsa.resolution_bits = "16"
		device.api = "alsa"
		device.class = "sound"
		alsa.class = "generic"
		alsa.subclass = "generic-mix"
		alsa.name = "CX20751/2 Analog"
		alsa.id = "CX20751/2 Analog"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.device = "0"
		alsa.card = "1"
		alsa.card_name = "HDA Intel PCH"
		alsa.long_card_name = "HDA Intel PCH at 0xf7d18000 irq 45"
		alsa.driver_name = "snd_hda_intel"
		device.bus_path = "pci-0000:00:1b.0"
		sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card1"
		device.bus = "pci"
		device.vendor.id = "8086"
		device.vendor.name = "Intel Corporation"
		device.product.id = "9c20"
		device.product.name = "8 Series HD Audio Controller"
		device.form_factor = "internal"
		device.string = "front:1"
		device.buffering.buffer_size = "352800"
		device.buffering.fragment_size = "176400"
		device.access_mode = "mmap+timer"
		device.profile.name = "analog-stereo"
		device.profile.description = "Analog Stereo"
		device.description = "Internes Audio Analog Stereo"
		alsa.mixer_name = "Conexant CX20751/2"
		alsa.components = "HDA:14f1510f,1043142d,00100100"
		module-udev-detect.discovered = "1"
		device.icon_name = "audio-card-pci"
	Ports:
		analog-output-speaker: Lautsprecher (priority: 10000)
		analog-output-headphones: Kopfhörer (priority: 9900, not available)
	Aktiver Port: analog-output-speaker
	Formate:
		pcm

Ziel #6
	Status: SUSPENDED
	Name: bluez_sink.B0_17_EC_DC_A0_C4.a2dp_sink
	Beschreibung: kodelek
	Treiber: module-bluez5-device.c
	Abtastwert-Angabe: s16le 2ch 44100Hz
	Kanalzuordnung: front-left,front-right
	Besitzer-Modul: 30
	Stumm: nein
	Lautstärke: front-left: 65536 / 100% / 0,00 dB,   front-right: 65536 / 100% / 0,00 dB
	        Verteilung 0,00
	Basis-Lautstärke: 65536 / 100% / 0,00 dB
	Quellen-Monitor: bluez_sink.B0_17_EC_DC_A0_C4.a2dp_sink.monitor
	Latenz: 0 usec, eingestellt 0 usec
	Flags: HARDWARE DECIBEL_VOLUME LATENCY 
	Eigenschaften:
		bluetooth.protocol = "a2dp_sink"
		device.description = "kodelek"
		device.string = "B0:17:EC:DC:A0:C4"
		device.api = "bluez"
		device.class = "sound"
		device.bus = "bluetooth"
		bluez.path = "/org/bluez/hci0/dev_B0_17_EC_DC_A0_C4"
		bluez.class = "0x1c0000"
		bluez.alias = "kodelek"
		device.icon_name = "audio-card-bluetooth"
	Ports:
		unknown-output: Bluetooth-Ausgabe (priority: 0)
	Aktiver Port: unknown-output
	Formate:
		pcm
[ruff@trx ~]$ pactl list sink-inputs
Ziel-Eingabe #265
	Treiber: protocol-native.c
	Besitzer-Modul: 12
	Client: 279
	Ziel: 0
	Abtastwert-Angabe: float32le 2ch 44100Hz
	Kanalzuordnung: front-left,front-right
	Format: pcm, format.sample_format = "\"float32le\""  format.rate = "44100"  format.channels = "2"  format.channel_map = "\"front-left,front-right\""
	Unterbrochen: ja
	Stumm: nein
	Lautstärke: front-left: 29456 /  45% / -20,84 dB,   front-right: 29456 /  45% / -20,84 dB
	        Verteilung 0,00
	Pufferlatenz: 174058 usec
	Ziel-Latenz: 0 usec
	Resample-Methode: copy
	Eigenschaften:
		media.name = "AudioStream"
		application.name = "Firefox"
		native-protocol.peer = "UNIX socket client"
		native-protocol.version = "33"
		application.process.id = "1176"
		application.process.user = "ruff"
		application.process.host = "trx"
		application.process.binary = "firefox"
		application.language = "de_DE.UTF-8"
		window.x11.display = ":0"
		application.process.machine_id = "56789e7763a4128867b186b200e3412"
		application.process.session_id = "1"
		application.icon_name = "firefox"
		module-stream-restore.id = "sink-input-by-application-name:Firefox"
[ruff@trx ~]$ pactl move-sink-input 265 6
[ruff@trx ~]$ pactl list sink-inputs
Ziel-Eingabe #265
	Treiber: protocol-native.c
	Besitzer-Modul: 12
	Client: 279
	Ziel: 6
	Abtastwert-Angabe: float32le 2ch 44100Hz
	Kanalzuordnung: front-left,front-right
	Format: pcm, format.sample_format = "\"float32le\""  format.rate = "44100"  format.channels = "2"  format.channel_map = "\"front-left,front-right\""
	Unterbrochen: ja
	Stumm: nein
	Lautstärke: front-left: 65536 / 100% / 0,00 dB,   front-right: 65536 / 100% / 0,00 dB
	        Verteilung 0,00
	Pufferlatenz: 174058 usec
	Ziel-Latenz: 0 usec
	Resample-Methode: copy
	Eigenschaften:
		media.name = "AudioStream"
		application.name = "Firefox"
		native-protocol.peer = "UNIX socket client"
		native-protocol.version = "33"
		application.process.id = "1176"
		application.process.user = "ruff"
		application.process.host = "trx"
		application.process.binary = "firefox"
		application.language = "de_DE.UTF-8"
		window.x11.display = ":0"
		application.process.machine_id = "567891e7763a4d24567b186b200e3412"
		application.process.session_id = "1"
		application.icon_name = "firefox"
		module-stream-restore.id = "sink-input-by-application-name:Firefox"
[ruff@trx ~]$
1 Like

You may be better off paying just a few dollars more and getting one with two connectors (speaker + microphone) - so that it is guaranteed as a straight plug in replacement.

1 Like

thanks. good suggestion.

In my case, Sonos allows me to select line levels so this should work.

This adapter just plugged in and worked. No setting had to be changed.
If you have a free USB port, this is a much better solution than soldering.

Thank you everyone for your help getting this resolved

2 Likes

I just wanted to share that I had my headphone jack loosen and fall off on my Librem 15v4 in Dec 2019 as well. :sob: The local shop offered to re-solder it but I ended up buying a new part from Purism for $30 USD + $6 shipping.
Then we just swapped it out and I now am so super careful not to pull or bend it because it is so delicate.

Also just had this happen to my 15v4 in July 2020…