Announcement

Collapse
No announcement yet.

HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

    Laptop works either on AC adapter or on battery but does not charge. The LED turns amber after connecting AC adapter, OS says "charging" but there's no current flow to the battery.

    Tested 3 adapters (original 135W, older 90W and 60W), two batteries (both do charge on bench supply and provide correct data through SMBUS).

    Charger is ISL9241, MOSFETs are OK. There's SMBUS communication between EC (IT8987VG) and charger. Examined SMBUS using analyzer - seems that EC does not enable charging

    Upgraded BIOS to latest (47), EC was flashed too during the process.
    Any ideas?

    #2
    Re: HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

    SMBUS voltage and resistance to ground are ok ?

    Confirm the resistance path from the ISL9241 to the current sense resistor for the battery charge path. Check the P and N sides of the CSR (low ohm resistor) to be sure there is no break or a cause to have a large voltage drop. Then the charger will shutdown if it senses the rail is under 'excessive load'.

    Comment


      #3
      Re: HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

      SMBUS is OK, laptop can read battery status including individual cell voltages.

      There's a 5 mohm current sense resistor and traces are OK.

      EC writes zero to register 0x14 (ChargeCurrentLimit) so no charge can happen...
      I've seen once a non-zero value write to register 0x14. But it wrote wrong values to 0x15 (MaxSystemVoltage) and 0x3E (MinSystemVoltage) - around 9V (the battery has 3 cells in series). After a moment, it wrote back zero to 0x14 (and also to 0x15 and 0x3E). Seems that EC is confused by something.

      Comment


        #4
        Re: HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

        Do you see the same SMBUS traffic if the battery is removed?

        Check the battery connector pins. Perhaps the charger is not detecting the battery?

        Does the battery respond to each smbus packet?

        Could the batteries be fake? Charger wants to see some id from the battery?

        Comment


          #5
          Re: HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

          One battery is original from the laptop. The other one is non-HP (BIOS displays a warning) but it should charge.
          Although the charger and battery are connected to a common SMBUS with EC, the charger does not communicate directly with the battery. Everything goes through the EC.

          Decoded and commented SMBUS capture when AC adapter is plugged in with no battery:
          Code:
          //charger IC dedetcion
          write(12, FE) read(13, 49, 00) //mfg. ID read == 0x0049
          write(12, FF) read(13, 0E, 00) //device ID read == 0x000E
          write(12, FF) read(13, 0E, 00) //device ID read == 0x000E
          write(12, FF) read(13, 0E, 00) //device ID read == 0x000E
          
          //set up charger and enable auto charging (to wake up undercharged battery?)
          write(12, 3C, 03, 00) //Control1 = defaults
          write(12, 3D, 00, 66) //Control2
          write(12, 3E, 40, 23) //MinSystemVoltage = 9,024V
          write(12, 15, 90, 33) //MaxSystemVoltage = 13,200V
          write(12, 47, 00, 19) //ACProchot# = 6,400A
          write(12, 48, 00, 14) //DCProchot# = 5,120A
          write(12, 4C, 80, C0) //Control3 = autonomous charging, disable ACLIM reload
          
          write(16) //attempt to communicate with battery - failed
          
          // disable charging and run directly from AC adapter (bypass)
          write(12, 47, 33, 07) //ACProchot# = 1,843A
          write(12, 14, 00, 00) //ChargeCurrentLimit = 0
          write(12, 3E, 00, 00) //MinSystemVoltage = 0
          write(12, 3F, C0, 17) //AdapterCurrentLimit1 = 6,080A
          write(12, 39, 40, 00) //Control0
          write(12, 4C, 01, 03) //Control3
          write(12, 3C, 43, 01) //Control1 = BGATE off, freq=1020kHz
          write(12, 15, 80, 47) //MaxSystemVoltage = 18,304V
          write(12, 39, 40, 08) //Control0 = BYPASS on
          
          //status read
          write(12, 3A) read(13, 28, 80) //Information1 == 0x8028
          write(12, 3A) read(13, 28, 80)
          write(12, 3A) read(13, 28, 80)
          write(12, 3A) read(13, 28, 80)
          write(12, 3A) read(13, 28, 80)
          write(12, 3A) read(13, 28, 80)...repeats forever
          All numbers are in hex.
          The bytes are in wire order - lowest byte first.
          "write(12, FE) read(13, 49, 00)" means that register 0xFE of device 0x12 is selected by a write and the read returned 0x0049.
          0x12/0x13 is the ISL9241, 0x16/0x17 is the battery

          Comment


            #6
            Re: HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

            Do you have a similar log for the case when the battery is connected?

            Do you see more smbus traffic for the battery slave node address of 0x16 when the battery is connected?

            Do compare with the original and replacement battery.

            Perhaps the BMS module inside the replacement battery is defective. The BMS module replies to the 0x16 node address.

            Comment


              #7
              Re: HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

              Plugged original battery with charger already plugged:
              Code:
              //...status read
              write(12, 3A) read(13, 28, 80)
              write(12, 3A) read(13, 28, 80)
              write(12, 3A) read(13, 28, 80)
              write(12, 3A) read(13, 28, 80)
              write(12, 3A) read(13, 28, 80)
              
              //EC detected battery presence, tries communication
              write(16)
              write(12, 3A) read(13, 28, 80)
              write(16)
              write(12, 3A) read(13, 28, 80)
              write(16)
              write(12, 3A) read(13, 28, 80)
              write(16)
              write(12, 3A) read(13, 28, 80)
              write(16)
              write(12, 3A) read(13, 28, 80)
              write(16)
              write(16)
              write(12, 3A) read(13, 28, 80)
              write(16)
              write(12, 3A) read(13, 28, 80)
              
              //battery communication works now
              write(16, 08) read(17, 8C, 0B) //bat. temperature == 22.45C
              write(12, 3A) read(13, 28, 80)
              write(16, 0D) read(17, 08, 00) //bat. RelativeStateOfCharge == 8%
              write(12, 3A) read(13, 28, 80)
              write(16, 19) read(17, 1E, 2D) //bat. DesignVoltage == 11,550V
              write(12, 3A) read(13, 28, 80)
              write(16, 18) read(17, 70, 1C) //bat. DesignCapacity == 7280mAh
              write(12, 3A) read(13, 28, 80)
              write(16, 0F) read(17, ED, 01) //bat. RemainingCapacity == 492mAh
              write(12, 3A) read(13, 28, 80)
              write(16, 10) read(17, 2C, 19) //bat. FullChargeCapacity == 6444mAh
              write(12, 3A) read(13, 28, 80)
              write(16, 16) read(17, C0, 02) //bat. status == 0x02C0 (discharging, initialized, remaining capacity alarm)
              write(12, 3A) read(13, 28, 80)
              write(16, 1C) read(17, 76, 04) //bat. SerialNumber == 1142
              write(12, 3A) read(13, 28, 80)
              write(16, 14) read(17, 00, 00) //bat. ChargingCurrent == 0 (battery not ready yet?)
              write(12, 3A) read(13, 28, 80)
              write(16, 15) read(17, 00, 00) //bat. ChargingVoltage == 0 (battery not ready yet?)
              write(12, 3A) read(13, 28, 80)
              write(16, 0C) read(17, 01, 00) //bat. MaxError == 1%
              write(12, 3A) read(13, 28, 80)
              write(16, 17) read(17, BA, 00) //bat. CycleCount == 186
              write(12, 3A) read(13, 28, 80)
              write(16, 1B) read(17, 82, 4D) //bat. ManufactureDate == 2018-12-02
              write(12, 3A) read(13, 28, 80)
              write(16, 1A) read(17, 31, 00) //bat. SpecificationInfo
              write(12, 3A) read(13, 28, 80)
              write(16, 22) read(17, 04, 4C, 49, 4F, 4E) //bat. DeviceChemistry == LION
              write(12, 3A) read(13, 28, 80)
              write(16, 21) read(17, 09, 53, 55, 30, 36, 30, 38, 34, 58, 4C) // bat. DeviceName == SU06084XL
              write(12, 3A) read(13, 28, 80)
              write(16, 70) read(17, 10, 36, 48, 4B, 42, 52, 30, 35, 54, 5A, 42, 4D, 34, 4D, 34, 00, 01) //bat. ??? == 6HKBR05TZBM4M4
              write(12, 3A) read(13, 28, 80)
              write(16, 20) read(17, 0B, 33, 33, 33, 2D, 32, 37, 2D, 30, 39, 2D, 41) //bat. ManufacturerName == 333-27-09-A
              write(12, 3A) read(13, 28, 80)
              write(16, 20) read(17, 0B, 33, 33, 33, 2D, 32, 37, 2D, 30, 39, 2D, 41) //bat. ManufacturerName == 333-27-09-A
              write(12, 3A) read(13, 28, 80)
              write(12, 3A) read(13, 28, 80)
              write(12, 3A) read(13, 28, 80)
              write(12, 3A) read(13, 28, 80)
              write(12, 3A) read(13, 28, 80)
              write(12, 3A) read(13, 28, 80)
              write(12, 3A) read(13, 28, 80)
              write(12, 3A) read(13, 28, 80)
              ...
              write(16, 00, 53, 00) //bat. mfg. access
              write(16, 23) read(17, 04, 00, 00, 00, 00) //bat. mfg. data
              write(12, 3A) read(13, 28, 80)
              write(12, 3A) read(13, 28, 80)
              write(12, 3A) read(13, 28, 80)
              ...
              write(12, 3A) read(13, 28, 80)
              write(12, 3A) read(13, 28, 80)
              write(16, 3F) read(17, 75, 0E) //bat. cell 1 voltage == 3,701V
              write(12, 3A) read(13, 28, 80)
              write(16, 3E) read(17, 73, 0E) //bat. cell 2 voltage == 3,699V
              write(12, 3A) read(13, 28, 80)
              write(16, 3D) read(17, 73, 0E) //bat. cell 3 voltagee == 3,699V
              write(12, 3A) read(13, 28, 80)
              write(16, 0A) read(17, 00, 00) //bat. current == 0A
              write(12, 3A) read(13, 28, 80)
              write(16, 09) read(17, 59, 2B) //bat. voltage == 11,097V
              write(12, 3A) read(13, 28, 80)
              write(16, 08) read(17, 83, 0B) //bat. temperature == 21,55C
              write(16, 16) read(17, C0, 02) //bat. status == 0x02C0
              write(12, 3A) read(13, 28, 80)
              write(16, 14) read(17, 38, 0E) //bat. ChargingCurrent == 3,640A
              write(12, 3A) read(13, 28, 80)
              write(16, 15) read(17, 90, 33) //bat. ChargingVoltage == 13,200V
              write(12, 3A) read(13, 28, 80)
              write(16, 18) read(17, 70, 1C) //bat. DesignCapacity == 7280mAh
              write(12, 3A) read(13, 28, 80)
              write(16, 19) read(17, 1E, 2D) //bat. DesignVoltage == 11,550V
              write(16, 10) read(17, 2C, 19) //bat. FullChargeCapacity == 6444mAh
              write(12, 3A) read(13, 28, 80)
              write(16, 0D) read(17, 08, 00) //bat. RelativeStateOfCharge == 8%
              write(12, 3A) read(13, 28, 80)
              write(16, 0F) read(17, ED, 01) //bat. RemainingCapacity == 492mAh
              write(12, 3A) read(13, 28, 80)
              write(16, 17) read(17, BA, 00) //bat. CycleCount == 186
              write(12, 3A) read(13, 28, 80)
              write(12, 3A) read(13, 28, 80)
              write(12, 3A) read(13, 28, 80)
              ...this cycle repeats forever, looks like regular status check
              Communication and data look good.
              No signs of charger setup, however. Maybe the EC does not support battery hot-plug (battery is not user-removable).

              Comment


                #8
                Re: HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

                I see writes to smbus node address 0x12 in the last log. Is that not the charger IC address?

                But same looping of packets??

                Do you see an esd tvs diode near the battery connector?

                If yes, remove it and test again.
                Last edited by mon2; 01-28-2023, 08:32 AM.

                Comment


                  #9
                  Re: HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

                  Q: how are you parsing the smbus captured logs?

                  Logs look very nice.

                  What is the EC trying to read from the charger IC?

                  Comment


                    #10
                    Re: HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

                    No diodes near battery connector.

                    I'm using sigrok-cli with fx2lafw, decoding using sigrok's i2c decoder and parsing the output using my script.

                    EC is reading the charger status register (Information1). It's probably normal - run repeatedly by some kind of timer inside EC as it's inserted even between battery register reads.

                    Comment


                      #11
                      Re: HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

                      Very nice setup.

                      Are you able to detect if the charger IC is timing out AFTER the battery is attached?

                      That is, why does the charger IC not proceed to charge the battery after these handshakes?

                      Are the logs the same using the other battery?

                      I would not expect the battery support to be hot swap capable.

                      With no power -> can you confirm that the battery linked mosfets are not leaking?

                      Check across the source / drain / gate pins to see if there is a low resistance.

                      Perhaps you have a leaky battery mosfet? Each mosfet should be inspected.

                      This bus analyzer is gold for this review.

                      Comment


                        #12
                        Re: HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

                        Should have asked earlier - can you link or post the schematic?

                        Comment


                          #13
                          Re: HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

                          All 6 MOSFETs around the charger are good.

                          Haven't found the schematic anywhere. At least ILS9241 datasheet is available.

                          Comment


                            #14
                            Re: HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

                            Noticed somethg weird:

                            When I plug the battery in, the battery MOSFET (controlled by BGATE) turns on. That's OK. Then I plug the adapter in and the battery MOSFET turns off. Still OK. But after unplugging adpater, the MOSFET never turns on again. Laptop then runs on-battery only through the MOSFET's diode.

                            Comment


                              #15
                              Re: HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

                              Replace the battery mosfet and test again.

                              Comment


                                #16
                                Re: HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

                                Also when I plug the AC adapter for the first time (since battery plugged in), I get a voltage around 11V on the charger coil for a fraction of second. The battery MOSFET also turns on for a fraction second. That's probably the moment when EC enables charging. And disables it 22ms later for unknown reason. Since it's not obvious from SMBUS communication, the signal probably goes through some other way, probably some other pin.

                                But as the schematic is not available, I could only check ISL9241 outputs and then give this up.

                                Comment


                                  #17
                                  Re: HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

                                  Or the charger IC enters shutdown mode autonomously due to excessive current draw on this leg of the circuit.

                                  What if..you remove the battery mosfet. Do you still see the ON and suddenly OFF even for the battery charge voltage?

                                  What are the details of the battery mosfet GATE voltage under the same conditions (with the battery mosfet removed) ?

                                  Would you have spare ISL9241 devices? They appear to be available from Digikey / Mouser and also Aliexpress.

                                  https://www.aliexpress.com/item/1005...d=YJ3ehHJalZaC

                                  What would be gold to have right now is a good log of the same SMBUS traffic from a working model of the same laptop.

                                  Comment


                                    #18
                                    Re: HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

                                    I have neither replacement MOSFETs nor ISL9241.
                                    Not spending any more time on this crap.

                                    Comment


                                      #19
                                      Re: HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

                                      The story continues. I've got a replacement board ("used, tested") and guess what?

                                      IT FUCKING DOES NOT CHARGE.

                                      Comment


                                        #20
                                        Re: HP Sprectre x360 15-DF DAX38CMBAG0 (Quanta X38) not charging

                                        Might sound a bit silly, but have you tried a different charging jack?

                                        Comment

                                        Working...
                                        X