Laptop refuses to charge from but one specific port

As said in the title, my framework 16 refuses to charge from any port other than one, the middle left one.
Result for ports 1, 4 and 5 :
:~$ sudo framework_tool --power
Charger Status
AC is: connected
Charger Voltage: 17600mV
Charger Current: 5488mA
1.00C
Chg Input Current:7680mA
Battery SoC: 92%
Battery Status
AC is: connected
Battery is: connected
Battery LFCC: 4855 mAh (Last Full Charge Capacity)
Battery Capacity: 4437 mAh
73.995 Wh
Charge level: 91%
Battery discharging

And port 2 :
:~$ sudo framework_tool --power
Charger Status
AC is: connected
Charger Voltage: 17600mV
Charger Current: 3840mA
0.70C
Chg Input Current:7680mA
Battery SoC: 92%
Battery Status
AC is: connected
Battery is: connected
Battery LFCC: 4855 mAh (Last Full Charge Capacity)
Battery Capacity: 4440 mAh
77.868 Wh
Charge level: 91%
Battery charging

Additional information :
:~$ sudo framework_tool --pd-info
Right / Ports 01
Silicon ID: 0x3580
Mode: MainFw
Flash Row Size: 256 B
Ports Enabled: 0, 1
Bootloader Version: Base: 3.6.0.009, App: 0.0.01
FW1 (Backup) Version: Base: 3.7.0.197, App: 0.0.21
FW2 (Main) Version: Base: 3.7.0.197, App: 0.0.21
Left / Ports 23
Silicon ID: 0x3580
Mode: MainFw
Flash Row Size: 256 B
Ports Enabled: 0, 1
Bootloader Version: Base: 3.6.0.009, App: 0.0.01
FW1 (Backup) Version: Base: 3.7.0.197, App: 0.0.21
FW2 (Main) Version: Base: 3.7.0.197, App: 0.0.21
Back
Failed to read Silicon ID/Family
:~$ sudo framework_tool --pdports // Nothing plugged in
USB-C Port 0:
PD Contract: No
Power Role: Sink
Data Role: Ufp
USB-C Port 1:
PD Contract: No
Power Role: Sink
Data Role: Ufp
USB-C Port 2:
PD Contract: No
Power Role: Sink
Data Role: Ufp
USB-C Port 3:
PD Contract: No
Power Role: Sink
Data Role: Ufp

When plugged :

USB-C Port 3: // Plugged in "1"
PD Contract:   Yes
Power Role:    Sink
Data Role:     Dfp
VCONN:         Off
Negotiated:    36.000 V, 5000 mA, 180.0 W
CC Polarity:   CC1
Port Partner:  Source
EPR:           Active (Supported)
Sink Active:   Yes

USB-C Port 2: // Plugged in "2"
PD Contract:   Yes
Power Role:    Sink
Data Role:     Dfp
VCONN:         Off
Negotiated:    36.000 V, 5000 mA, 180.0 W
CC Polarity:   CC1
Port Partner:  Source
EPR:           Active (Supported)
Sink Active:   Yes

USB-C Port 0: // Plugged in "4"
PD Contract:   Yes
Power Role:    Sink
Data Role:     Dfp
VCONN:         Off
Negotiated:    36.000 V, 5000 mA, 180.0 W
CC Polarity:   CC1
Port Partner:  Source
EPR:           Active (Supported)
Sink Active:   Yes

USB-C Port 1: // Plugged in "5"
PD Contract:   Yes
Power Role:    Sink
Data Role:     Dfp
VCONN:         Off
Negotiated:    36.000 V, 5000 mA, 180.0 W
CC Polarity:   CC1
Port Partner:  Source
EPR:           Active (Supported)
Sink Active:   Yes

So they do detect and negotiate fine.

  .;cccccccccccccccccccccc;.          OS: Fedora Linux 44 (KDE Plasma Desktop Edition) x86_64
.:cccccccccccccccccccccccccc:.        Host: Laptop 16 (AMD Ryzen 7040 Series) (AG)

.;ccccccccccccc;.:dddl:.;ccccccc;.      Kernel: Linux 7.2.11-200.fc44.x86_64
.:ccccccccccccc;OWMKOOXMWd;ccccccc:.     Uptime: 27 mins
.:ccccccccccccc;KMMc;cc;xMMc;ccccccc:.    Packages: 8 (appimage), 112 (flatpak-system), 1 (flatpak-user), 3147 (rpm)
,cccccccccccccc;MMM.;cc;;WW:;cccccccc,    Shell: bash 5.3.9
:cccccccccccccc;MMM.;cccccccccccccccc:    Display (BOE0BC9): 2560x1600 @ 1.25x in 16", 165 Hz [Built-in]
:ccccccc;oxOOOo;MMM000k.;cccccccccccc:    Desktop Environment: KDE Plasma 6.7.5
cccccc;0MMKxdd:;MMMkddc.;cccccccccccc;    Window Manager: KWin (Wayland)
ccccc;XMO';cccc;MMM.;cccccccccccccccc'    WM Theme: Breeze
ccccc;MMo;ccccc;MMW.;ccccccccccccccc;     Theme: Breeze (Dark) [Qt], Breeze [GTK3]
ccccc;0MNc.ccc.xMMd;ccccccccccccccc;      Icons: breeze-dark [Qt], breeze-dark [GTK3/4]
cccccc;dNMWXXXWM0:;cccccccccccccc:,       Font: Noto Sans (10pt) [Qt], Noto Sans (10pt) [GTK3/4]
cccccccc;.:odl:.;cccccccccccccc:,.        Cursor: breeze (30px)
ccccccccccccccccccccccccccccc:'.          Terminal: konsole 26.8.1
:ccccccccccccccccccccccc:;,..             CPU: AMD Ryzen 7 7840HS (16) @ 5.14 GHz
':cccccccccccccccc::;,.                  GPU 1: AMD Radeon RX 7700S [Discrete]
GPU 2: AMD Radeon 780M Graphics [Integrated]
Memory: 8.63 GiB / 30.64 GiB (28%)
Swap: 2.59 MiB / 30.64 GiB (0%)
Disk (/): 298.26 GiB / 1.82 TiB (16%) - btrfs
Disk (/mnt/ScdDrive): 651.56 GiB / 915.80 GiB (71%) - ext4
Local IP (wg0-mullvad): 10.168.64.115/32
Battery (FRANDBA): 93% [AC Connected, Charging]
Locale: en_GB.UTF-8

I did test without the expansion cards.
I’ve had the laptop for a bit more than 2 years now, so I’m not expecting any free stuff/warranty.
I can still use it and charge it, even though I can only do the latter through that one specific port.
What I would like is :

  1. Figure if the problem comes from a software or hardware issue
  2. Figure out the simplest/cheapest way for me to fix it, if any

I did find this thread Framework 16 Failing to charge from any port other that 1 for unknown reasons after laptop being on for a while. · Issue #40 · FrameworkComputer/SoftwareFirmwareIssueTracker · GitHub so I would not be surprised if my issue is similar.

I did not want to waste the framework support team’s time, so I figured I could ask here first, as this is no emergency.

Thanks in advance for any input !

I’ve had this issue semi-frequently when switching from different docks (TB3, 4, USB, etc) and USB-C PD supplies without giving thought to whatever power management system has to renegotiate whatever it negotiates with whatever it negotiates with. The ports get confused and fall back to a safe mode that doesn’t charge the battery.

At least that’s my understanding, I am but a mere user.

It seems to be more of an AMD issue than framework tbh. Luckily a battery disconnect via the BIOS sets everything back to right.

1 Like

It failed at first, so I tried to have it start with battery physically unplugged after disabling it through the UEFI. It failed to reach the OS a few times but succeeded after a few more attempts. I then shut it down, put the battery back, turned it on, and it now successfully charges from all the expected ports.
So TLDR : issue fixed! (for now)
Thanks for the help :smiley:

The “managing to boot but failing to reach the os” part would lead me to think it might be related to how the kernel talks with the power negotiation system, so the uefi knew it was fine, but the kernel thought that wasn’t the case perhaps ? Just an uneducated guess though