Dell Precision 7680 Charger Emulator

by wiredcav in Circuits > Computers

104 Views, 1 Favorites, 0 Comments

Dell Precision 7680 Charger Emulator

20260418_132027.jpg
20260418_131813.jpg
20260418_131544.jpg

The I.T. guys recently gave me a new Dell Precision 7680 laptop. It turns out to be an enormous power hog. It’s still pretty new, but the battery life is only about 90 minutes – even if I do all the battery saver stuff. To make matters worse, it uses a 240W charger – and that charger does not work on any planes I’ve been on. They just can’t handle the current. So I searched for a solution and mostly came up empty. I did find another Dell charger emulator, but it doesn’t work on this model. I learned that I can use a lower power charger (a 90W Lenovo charger) to keep my laptop from draining on the plane, but that charger doesn’t negotiate a handshake with the laptop, so it will not charge – no matter what.

So I decided to reverse engineer the new laptop/charger handshake myself and make my own emulator. If you need one, I sure hope this will save you a load of trouble. That being said, I can promise you that this one works, but I cannot promise you that everything I claim here is 100% accurate – I hope it is.

Supplies

SOIC breakout.jpg
ftdi.jpg
UPDI.jpg
cable.jpg

ATTINY1624 IC: $0.88 each from Mouser; ATTINY1624-SSU

SOIC-14 Breakout board for the ATTINY1624; 6 for $4.95; Mouser part number 485-1210

FTDI USB->serial adapter; as cheap as $0.99 on ebay (to make a UPDI programmer).

Alternatively you can get a ready-made UPDI programmer from Adafruit.com for $6.95

A 3D printer and some filament if you want to print the enclosure. I used a Bambu Lab A1 and Sunlu black PETG filament.

BC547 transistor (or similar)

Little piece of proto-board to build the circuit on

100K resistor

39K resistor

100nF capacitor

10uF capacitor

LD1117 3.3V regulator (or similar)

Charger cable; 2 for $8.49 from Amazon

Background

I based my emulator on the ATTINY1624. This is basically an Arduino on a surface mount chip. But it’s not as tiny as some surface mount IC’s, so it’s reasonably easy to solder by hand. You’ll want a breakout board for it – and fortunately they’re dirt cheap.Fortunately, the ATTINY is dirt cheap too.

I use the standard Arduino IDE for development and uploading of the sketch. I also have a version of this emulator for the Arduino Nano – but I haven’t yet tested that.Just say the word if you’d like me to get off my butt and test it.

The Handshake

FJRW8W7MO3IQV8K.jpg
FB6DL46MO3IQV8Q.jpg
3 full handshake 1.jpg
4 charger presence pulse.jpg
5 First data exchange.jpg
6 Bit detail.jpg
7 Second data exchange.jpg

The default laptop activity is to hold the line high for just under 2 seconds, and then hold it low for just under 1 second. This repeats indefinitely. But there is a little deviation from a typical square wave. Each rising edge actually has a “wiggle” in it. After the initial rising edge, the signal stays high for 5.36ms (milliseconds), then drops low for 6.6ms before going high again and staying high for almost 2 seconds. It does this every time. This is depicted in figures 1 and 2.



When an OEM Dell charger (of the right type) is plugged in, it responds to the first rising edge it sees after a longish (I use a 0.95 sec threshold) low. At this point we’re off to the races, and we get a bit of back and forth between the laptop and charger as depicted in figure 3.


Note that there are two different LOW levels in some of my figures. This is because I put a 560 ohm resistor in the 1-wire line between my oscilloscope probe and the charger. In this way I could tell when the laptop was talking (the lows would go all the way down) and the charger side (lows would not go all the way down).


The charger’s response to the first rising edge (after a nearly 1 sec low) is to wait 25uS (microseconds), then pull the line low for 58uS. It does this on both the first and second rising edges of the laptop’s “wiggle”. See figure 4. With that done, the laptop then sends out a string of command bits – in the form of 4 bytes…

0xCC -> Skip ROM command — Skip the device identification step, talk to whatever device is on the bus

0xF0 -> Read Memory command - Request to read from the device's memory

0x06 -> Address low byte — The address to read from, which is address 0x00 0x06

0x00 -> Address high byte


Note that each byte is sent least-significant bit first for both laptop and charger.

The charger then responds with 6 of its own bytes for the 180W charger:

0x27 -> <not printable>

0x41 -> 'A'

0x43 -> 'C'

0x31 -> '1'

0x38 -> '8'

0x30 -> '0'


Or this set of 6 bytes for the 240W charger:

0x27 -> <Not printable>

0x41 -> 'A'

0x43 -> 'C'

0x32 -> '2'

0x34 -> '4'

0x30 -> '0'


Figure 5 shows this first exchange in more detail.


You can see the lower lows are the laptop talking and the now quite so low lows are the charger responding. In the final circuit I don’t use a resistor in the line, so you normally would not see these two different types of lows. After the laptop bytes you can see where each charger bit is triggered by a brief laptop pull of the line all the way down, and with the charger not responding at all to indicate a 1, or continuing to hold the line low a little longer (to indicate a 0). Figure 6 shows this in greater detail.


After this first laptop/charger exchange, we get a little pause consisting of a 536ms low followed by a 547ms high. But again the charger asserts its standard presence signal just after this high transition. This is followed by the second (and final) laptop/charger data exchange (see figure 7).If both data exchanges are successful, the 1-Wire line will then stay high for the duration of your session.


In the second data exchange, the laptop sends another 4 bytes:

0xCC -> Skip ROM command — Skip the device identification step, talk to whatever device is on the bus

0xF0 -> Read Memory command - Request to read from the device's memory

0x2A

0x00 -> Address high byte


And that’s followed by the second set of charger bytes:

0xAB -> <not printable>

0x45 -> 'E'

0x30 -> '0'

0x35 -> '5'

Programming the ATTINY1624

SerialUPDI programmer.jpg

Go ahead and solder the ATTINY1624 to its breakout board. Then, using the Arduino IDE and a suitable programmer, load the attached sketch Dell_Power_Supply_spoofer.ino


For a programmer, I made a serial UPDI programmer from an inexpensive FTDI USB->Serial adapter. You can buy one ready to go for $6.95 from Adafruit.com, or you can make one from my really poor diagram (Figure 8)



In the Arduino IDE, select the appropriate ATTINY board. NOT just the right group of boards!

You have to go down a bit further in the Tools menu and select the right chip (I usually use the ATTINY1624).

Also select "SerialUPDI - SLOW 57600" under Tools -> Programmer

Set clock to "20Mhz internal" under "Tools", and be sure to "Burn bootloader" under tools if you've not ever done so on this particular ATTINY1624 - to make sure the clock setting takes effect.


Set the port latency to 1msec:

In the Windows Device Manager: Rt-click on the FTDI (or serial UPDI programmer) port and select: Properties -> Port settings -> Advanced -> Latency timer


Upload the attached sketch :

Back in the Arduino IDE look for "Programmer" in the Tools menu and select "Arduino as ISP" (NOT "ArduinoISP").

Use the Device Manager to verify which port the the serial UPDI programmer is on, and select that port under Tools.

Under "Sketch", select "Upload Using Programmer".

That should do it.

Build the Circuit

Voltage follower.jpg
Full schematic.jpg

I soldered mine up on little proto-board, and 3D printed a simple enclosure for it (stl files attached here). It’s then velcro’d to the charger. To power it I use a basic 3.3V linear voltage regulator (LD1117).

But the 3.3V converter can’t take the 19.5V the Dell charger puts out. So I first drop the voltage from 19.5V to something like 4.77V with the simple voltage follower shown in figure 9.


Figure 10 shows the complete circuit.


Assuming you’re using a non-Dell charger, plus this emulator circuit, to power your Dell Precision 7680, you’ll also need the right cable, with the center data pin to plug into the laptop. You can get two for $8.49 from Amazon. Search for:

2Pcs DC Power Adapter Cord Tip 7.4mm x 5.0mm Male Plug Connector Adapter Pigtail Cable for DELL HP Laptop Power Adapter Replacement 30cm

Dell claims that the minimum wattage power supply that's supported is 90W, and that you'll get a message warning that you're using a low-wattage charger and will have slower charging speed. I have not figured out the byte sequence for a 90W charger, and don’t have one to test.I do have a 90W Lenovo charger, and that now works fine with my Dell Precision 7680 when I use my emulator set on 180W or 240W.