Agilent U1273AX / Keysight U1273AX
Original Screen is SSD1303 driver, SOLOMON SYSTECH
Digital Multimeter microprocessor is D78F0547, datasheet and programming docs are in earlier post.
Keysight has firmware updates, links to them added in earlier post.
I erroneously thought firmware version 3 and version 4 are due to different screens. That was an unreasonable assumption. I do not know the difference but I can't verify if it is due to a different screen SSD version. In fact I have not seen on the net anyone claiming that their meter is with anything newer then 1303 from the factory.
My focus on now is how to disassemble the firmware, amend it's code to match a newer OLED driver, compile it back and push it over to the multimeter.
Searching the net I found a guy who wrote a disassembler for this type of chip. Here is the GitHub page:
https://github.com/mnaberez/k0dasmHis code is specific to a different chip though, so I had to update two of his files, command.py and symbols.py, with hardware vectors and special function registers for D78F0547.
Here are the links to these two updated files:
command.py -
https://drive.proton.me/urls/SERRTAHHZM#XDrd7wwvzOkcsymbols.py -
https://drive.proton.me/urls/NXZ45SNNMW#aJBO1dpW3PZvInside firmware you will find 18 files called Binary.NewBinary1 through Binary.NewBinary18. Those are the firmware for our chip (at least this is what I can see so far, please correct me if I am wrong).
Running each of these files through k0dasm, we get output which is to be processed through ASxxxx 5.50 Cross Assembler (
https://shop-pdp.net/ashtml/asxget.php). Obviously before that it would have to be inspected and edited to amend the communication with OLED screen driver.
In terms of loading our edited firmware onto multimeter, Keysight allows to roll back the update to a previous version which in turn will allow to update it back to current version. Just swapping the Binary.NewBinary1 through Binary.NewBinary18 inside the update file with our amended ones then will allow to upload the firmware onto multimeter.
Where I have a steep learning curve ahead is to understand the output code from k0dasm. It is assembly and I do not know it. Maybe someone here can help, or maybe all of this is somehow a dead ending without me realizing it - let me know!
I hope to learn a lot as a result of this project. And obviously simplify replacement of the OLED screen.