Does Display refresh voltage/current while in binmode?

TL;DR:
Does bus pirate 6 display wake up from screen saver, when bus pirate is used in binmode?
Does bus pirate 6 refresh it’s values (current/voltage) while in binmode?

Hello together,

I’m trying to read SPI using Flashrom with my bus pirate 6 (software updated recently)

Setup
After double/trible checking the wiring, I connected my testing computer with bus pirate 6 and entered binmode (High on IO2 and IO3, 3.3V and 150mA. - Everything fine and ready.

Using Flashrom
I used this command

sudo flashrom -p buspirate_spi:dev=/dev/ttyACM1,spispeed=1M -r bios_pirateDump.bin  -VV

I used the path to the device “Bus Pirate BIN”
Bus pirate is recognized:
‘Detected Bus Pirate hardware 2.5 (“v2.5”)
Detected Bus Pirate firmware 7.1 (“v7.1”)’

At flashrom it’s finding no Chip and it returns
“No EEPROM/flash device found.”

For Troubleshooting I try to understand if the bus pirate works fine.
The display shows which connectors have which function (MISO, VCC aso.) but there is no voltage (everything on 0.0). Are those values just not refreshed in binary mode or are those really 0.0? I also activated Screen Saver and when I start flash rom while screensaver is on, it does it’s thing, but bus pirate keeps screen saver active (just FYI).
If there are good guides on that topic, please let me know!
I know about docs.buspirate.com and WrongBauds Blog. :slight_smile:
Thank you very much! :blush:

1 Like

Hi @M4CHN0 -

For binmode the answer is “it depends”. It depends on how the author implemented the binmode. If the power is enabled via the pirate-lib framework, then it should show current, voltage, etc. If they just flipped the VREG on, then no, the service that updates the screen will not refresh the voltage and current.

The screensaver is similar, it is controlled from the high level loop, so if the binmode doesn’t handle it, then it won’t go off (perhaps) or turn back on (for sure). I put in an issue at github for this.

As for flashrom - @Dreg knows the most about this as he did the legacy binmode.

1 Like

Hi @M4CHN0

The legacy bin mode for flashrom is still beta and experimental, so it’s likely things will break, haha.

If you see VOUT off or something like that, it’s because I haven’t programmed the display to update when flashrom sends the command to turn on the PSU. But don’t worry—it should still work, even if the Bus Pirate screen doesn’t show it.

Alright, let’s do some simple tests.

Can you download the latest Bus Pirate firmware?

https://forum.buspirate.com/t/bus-pirate-firmware-auto-build-main-branch/20/999999

Give me all the info you can—send me photos of the setup, memory… anything you can think of.

You wouldn’t believe how many users reported issues and it turned out to be a signal integrity problem because of how things were connected.

Oh, and try this:

flashrom.exe --progress -V -p buspirate_spi:dev=COM8,spispeed=250k,serialspeed=115200 -r flash_content.img

Send me all the output, please.

Btw, use this flashrom version: * v1.5 (Dec 2024)

2 Likes

Hey @Dreg
I have to leave soon, but I will go through all steps tomorrow.
Rn I’m not sure anymore if I have BusPirate5XL or 6.
It shows RP2350 as folder for update and calls itself Bus Pirate 6 in the head of update text, but the mass storage folder is called ‘Bus pirate 5’.
I went back to flashrom 1.5.
I can’t execute your command because I work on Linux debian, but as said, I’ll deliver tomorrow!

Thank you really much already!

1 Like

@M4CHN0 Enter the terminal and type the command 'i'—that shows you what you have.

2 Likes

Are you trying to program in-circuit?

I lately tried binmode and it also didnt work. Then I used SPI mode from BP CLI and saw that current fuse got triggered and disabled PSU automatically

2 Likes

Hello together,

I installed the most recent firmware for BusPirate6 (it’s a buspirate 6) yesterday right after your request. The tests are started with a debian based Linux (Kali to be precise).
Right now I’m only trying to read something from SPI-Flash. Next step would then be to upload a bin-file.
I attached a picture of the used interface. Usually it is used with systems by Dediprog. I have no fitting adapter to put buspirate directly on the spi flash descriptor. I connected every pin with it counterpart on the buspirate. I’ve read about voltage issues and to disconnect buspirates Vcc and powering the board instead. Have not tried that yet.

This command is not working for me, because I’m not on Windows, but I’ll to bring it into a form I can work with. :slight_smile:

I hope I answered all questions and have sent all info you need, if not, don’t hesitate to ask for it^^

Thank you really really much!

I can’t send a text file, so I’ll just write the flashrom response here. I got rid of some probing to stay inside message length limit

sudo flashrom -p buspirate_spi:dev=/dev/ttyACM1,spispeed=1M -r bios_pirateDump.bin -VV
flashrom v1.5.0 on Linux 6.12.25-amd64 (x86_64)
flashrom is free software, get the source code at https://flashrom.org

flashrom was built with GCC 14.2.0, little endian
Command line (5 args): flashrom -p buspirate_spi:dev=/dev/ttyACM1,spispeed=1M -r bios_pirateDump.bin -VV
Initializing buspirate_spi programmer
Detected Bus Pirate hardware 2.5 (“v2.5”)
Detected Bus Pirate firmware 7.1 (“v7.1”)
Using SPI command set v2.
SPI speed is 1MHz
Raw bitbang mode version 1
Raw SPI mode version 1
Driving AUX high.
The following protocols are supported: SPI.
Probing for AMIC A25L010, 128 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for AMIC A25L016, 2048 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for AMIC A25L020, 256 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for AMIC A25L032, 4096 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for AMIC A25L040, 512 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for AMIC A25L05PT, 64 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for AMIC A25L05PU, 64 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for AMIC A25L080, 1024 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00

Probing for Sanyo LE25FU206A, 256 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Sanyo LE25FU406B, 512 kB: probe_spi_res2: id1 0x0, id2 0x0
Probing for Sanyo LE25FU406C/LE25U40CMC, 512 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Sanyo LE25FW106, 128 kB: probe_spi_res2: id1 0x0, id2 0x0
Probing for Sanyo LE25FW203A, 256 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Sanyo LE25FW403A, 512 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Sanyo LE25FW406A, 512 kB: probe_spi_res2: id1 0x0, id2 0x0
Probing for Sanyo LE25FW418A, 512 kB: probe_spi_res2: id1 0x0, id2 0x0
Probing for Sanyo LE25FW806, 1024 kB: probe_spi_res2: id1 0x0, id2 0x0
Probing for Sanyo LE25FW808, 1024 kB: probe_spi_res2: id1 0x0, id2 0x0
Probing for Spansion S25FL004A, 512 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL008A, 1024 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL016A, 2048 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL032A/P, 4096 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL064A/P, 8192 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL116K/S25FL216K, 2048 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL127S-256kB, 16384 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL127S-64kB, 16384 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL128L, 16384 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL128P…0, 16384 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL128P…1, 16384 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL128S…0, 16384 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL128S…1, 16384 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL128S_UL Uniform 128 kB Sectors, 16384 kB: Read id bytes: 0x00 0x00 0x00 0x00 0x00 0x00.
Probing for Spansion S25FL128S_US Uniform 64 kB Sectors, 16384 kB: Read id bytes: 0x00 0x00 0x00 0x00 0x00 0x00.
Probing for Spansion S25FL129P…0, 16384 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL129P…1, 16384 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL132K, 4096 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL164K, 8192 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL204K, 512 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL208K, 1024 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL256L, 32768 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL256S Large Sectors, 16384 kB: Read id bytes: 0x00 0x00 0x00 0x00 0x00 0x00.
Probing for Spansion S25FL256S Small Sectors, 16384 kB: Read id bytes: 0x00 0x00 0x00 0x00 0x00 0x00.
Probing for Spansion S25FL256S…0, 32768 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FL512S, 65536 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Spansion S25FS128S Large Sectors, 16384 kB: Read id bytes: 0x00 0x00 0x00 0x00 0x00 0x00.
Probing for Spansion S25FS128S Small Sectors, 16384 kB: Read id bytes: 0x00 0x00 0x00 0x00 0x00 0x00.
Probing for Winbond W25P16, 2048 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25P32, 4096 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25P80, 1024 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q128.V, 16384 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q128.V..M, 16384 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q128.W, 16384 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q128.JW.DTR, 16384 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q16JV_M, 2048 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q16.V, 2048 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q16.W, 2048 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q20.W, 256 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q256FV, 32768 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q256JV_Q, 32768 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q256JV_M, 32768 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q256JW, 32768 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25R512NW/W74M51NW, 65536 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q256JW_DTR, 32768 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q32BV/W25Q32CV/W25Q32DV, 4096 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q32FV, 4096 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q32JV_M, 4096 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q32JV, 4096 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q32BW/W25Q32CW/W25Q32DW, 4096 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q32FW, 4096 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q32JW…Q, 4096 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q32JW…M, 4096 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q40.V, 512 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q40BW, 512 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q40EW, 512 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q512JV, 65536 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q512NW-IM, 65536 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q64BV/W25Q64CV/W25Q64FV, 8192 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q64JV-.Q, 8192 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q64JV-.M, 8192 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q64.W, 8192 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q64JW…M, 8192 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q80.V, 1024 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q80BW, 1024 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25Q80EW, 1024 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25X05, 64 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25X10, 128 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25X16, 2048 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25X20, 256 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25X32, 4096 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25X40, 512 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25X64, 8192 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond W25X80, 1024 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for XMC XM25QH80B, 1024 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for XMC XM25QU80B, 1024 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for XMC XM25QH16C/XM25QH16D, 2048 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for XMC XM25QU16C, 2048 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for XMC XM25QH32C/XM25QH32D, 4096 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for XMC XM25QU32C, 4096 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for XMC XM25QH64C/XM25QH64D, 8192 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for XMC XM25QU64C/XM25LU64C, 8192 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for XMC XM25QH128A, 16384 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for XMC XM25QH128C/XM25QH128D, 16384 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for XMC XM25QU128C/XM25QU128D, 16384 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for XMC XM25QH256C/XM25QH256D, 32768 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for XMC XM25QU256C/XM25QU256D, 32768 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for XMC XM25RU256C, 32768 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for XMC XM25QH512C/XM25QH512D, 65536 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for XMC XM25QU512C/XM25QU512D, 65536 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for XTX Technology Limited XT25F02E, 256 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for XTX Technology Limited XT25F64B, 8192 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for XTX Technology Limited XT25F128B, 16384 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Zetta Device ZD25D20, 256 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Zetta Device ZD25D40, 512 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Zetta Device ZD25LQ128, 16384 kB: compare_id: id1 0x00, id2 0x00
Probing for Unknown SFDP-capable chip, 0 kB: Signature = 0x00000000 (should be 0x50444653)
No SFDP signature found.
Probing for AMIC unknown AMIC SPI chip, 0 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Atmel unknown Atmel SPI chip, 0 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Eon unknown Eon SPI chip, 0 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Macronix unknown Macronix SPI chip, 0 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for PMC unknown PMC SPI chip, 0 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for SST unknown SST SPI chip, 0 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for ST unknown ST SPI chip, 0 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Sanyo unknown Sanyo SPI chip, 0 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Winbond unknown Winbond (ex Nexcom) SPI chip, 0 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Generic unknown SPI chip (RDID), 0 kB: RDID byte 0 parity violation. compare_id: id1 0x00, id2 0x00
Probing for Generic unknown SPI chip (REMS), 0 kB: compare_id: id1 0x00, id2 0x00
No EEPROM/flash device found.
Note: flashrom can never write if the flash chip isn’t found automatically.
Raw bitbang mode version 1
Bus Pirate shutdown completed.

1 Like

1 Like

1 Like

1 Like

1 Like

1 Like

And hello @AreYouLoco
y, I directly control the device without any framework.
I lack experience in using stuff like BP CLI. There are some CLIs named like that, so I’m not sure which precise one you mean. I’m thankful for material I can use to learn more :slight_smile:

1 Like

Try swapping MISO/MOSI pins. Sometimes they are labbeled like TX RX the other way around.

Also binmode is for usage especially with flashrom so you do good here.

But also try issueing “m” instead of “binmode” in BP console and choose SPI mode there. There should be docs on the website how to use it already I assume.

BP CLI I mean console you have using BusPirate over serial so just serial console you already have used looking at the screenshots.

There is “flash” command in SPI mode you may use. But it will save dump on BusPirate filesystem if working not directly on your Linux box like with flashrom so you would have to copy it from internal buspirate memory.

3 Likes

Yes, if you just want to dump a flash chip check the command reference for the spi flash command. It doesn’t take any external software. There’s a screen cast of it in action so you can follow along.

1 Like

@M4CHN0 can you try with spispeed=250k??

2 Likes

I did, but same result. :confused:

1 Like

@M4CHN0 If you enter SPI mode via commands, turn on the power supply, and send some SPI command to that memory chip—do you get a response?

1 Like

I started with Flashrom, because I thought it might be the easiest way to start out. Not that clever, when I now think about it :thinking:
I started out with m/SPI mode and I think now it gets obvious, that the problems are not on bus pirate (have not thought so anyway), but on my setup. I went through the parts, which aren’t about writing or erasing for the moment.
The device is always answering with zeros. When I swap MISO and MOSI it changes to FF. Here an example where I switched in between:
SPI> [0x05 r]

CS Enabled
*TX: 0x05 *
*RX: 0x00 *
CS Disabled
SPI> [0x05 r]

CS Enabled
*TX: 0x05 *
*RX: 0xFF *
CS Disabled
I therefore think my device is just not talking to me :cry:

1 Like

Sometimes is more easy desolder the chip… does the PSU fuse trip or do you notice anything unusual? (terminal SPI commands)

@M4CHN0 You can also use the Bus Pirate as a logic analyzer, or if you have one around, connect it and check what happens when that board powers on—and let us know.

1 Like