###
This introduction is an open source project ported from Github: https://github.com/bbogush/nand_programmer. It is an open source NAND programmer based on STM32. I hope more enthusiasts can improve it.
#### Record
- 2022-11-29 The attachment `NANDO_Installer_x64_win10_3.4.2.exe` is a Windows 10 64-bit client, and the PCB version required is 3.4
- 2022-12-08 Due to the epidemic, the PCB just arrived today, and I took the time to put it in The board was welded by hand. It took two hours to solder the board. The main reason was that the 100-pin microcontroller was not easy to assemble and soldered easily.
- The program can be brushed directly according to the steps of the original author, that is, replacing the STM tools with GD tools, it is very simple!
![Main control board]
![Adapter board]
![Correct firmware identification]
#### PCB
![board.jpeg]
#### Application (linux)
![host_app.jpeg]
#### Features
> I won’t go into detail here, I believe all of you are much better at English than I am
- USB interface
- PC client software for Linux & Windows.
- TSOP-48 socket adapter for NAND chip (compatible with TL866 adapter)
- TSOP-48 solder adapter for NAND chip
- 8 bit parallel NAND interface
- SPI interface
- 3.3V NAND power supply
- NAND read,write and erase support
- NAND read of chip ID support
- NAND read of bad blocks
- NAND bad block skip option
- NAND include spare area option
- Open KiCad PCB & Schematic
- Open source code
- Read & Write LEDs indication
- Extendable chip database
- Chip autodetection
- Firmware update
#### Disadvantages
>- Low flash write speed on Windows 10. Probably issue with driver.
> - No support of ECC calculation. In order to recover some device firmware the dump with spare area is required.
It should mean that writing is slower in Windows 10 system, which may be a driver problem.
There is no ECC calculation, some firmware may need to be dumped!
#### Supported chips
- Parallel NAND:
K9F2G08U0C, HY27US08121B, TC58NVG2S3E, F59L2G81A, MX30LF2G18AC and others.
See full list of supported chips qt/nando_parallel_chip_db.csv
>Full list in qt/nando_parallel_chip_db.csv file, You can add it yourself, The attachment can be seen after decompression.
- SPI flash
AT45DB021D, MX25L8006E, W25Q16JV and others.
See full list of supported chips qt/nando_spi_chip_db.csv
>The complete list is in the qt/nando_spi_chip_db.csv file. You can add it yourself. You can see it after decompressing the attachment.
#### Original application & firmware
text: You can download host application deb package for Ubuntu/Windows installer, firmware binary for STM32, schematic and gerber files from Google Driver.
> It means that they are all on Google Cloud Disk, and of course they cannot be accessed in China. Yes, here I will move domestically.
#### License
original text:
In general the sorce code, PCB and schematic are under GPLv3 license but with limitations of:
firmware/libs/spl/CMSIS/License.doc
firmware/libs/spl/STM32_USB-FS-Device_Driver/ - http ://www.st.com/software_license_agreement_liberty_v2
firmware/usb_cdc - http://www.st.com/software_license_agreement_liberty_v2`
> The general idea is to follow the GPLv3 agreement. Of course, many domestic people will ignore this. You must not do this~~
#### WiKi
original text: Check WiKi page for more information.`
>Here is a link to Github. I wonder if you can access it. The address is: https://github.com/bbogush/nand_programmer/wiki
#### The porter said
- I don’t know if the platform has this project. I searched for nand and it seems No relevant ones were found, most of them are SPI programmers.
- I moved this project because my classmate Xiao Ai was bricked by me. It costs several hundred to buy a nand. It is too expensive and I can’t afford it.
- The project wiki is still very helpful. If a friend cannot access it, just leave a message and I will find a way to synchronize it to China.
- The attachments of Google Cloud Drive are very large, I will try my best to download them all.
- The attachment nand_programmer was downloaded on 2022-11-24. If Github is updated, I should upload it simultaneously.
- This supported nand film seems to be very few, but you can actually add it by yourself. It is quite easy to read the instructions.
### **Finally, I wish you all no bricks in flashing your phone! **
>I am too poor to buy a commercial programmer!
PS, here is the original text of adding the chip:
Add new parallel NAND chip
Open Settings - Parallel chip database and add chip parameters from datasheet.
- Name - name of chip.
- Page Size - page size in bytes without spare area (hexadecimal).
- Block Size - block size in bytes without spare area (hexadecimal).
- Total Size - total size in bytes without spare area (hexadecimal).
- Spare Size - spare size in bytes (hexadecimal).
- BB mark off. - the offset of byte in the spare area which contains bad block mark. The block is considered as bad if the byte contains non 0xFF value. The offset starts from 0.
- tCS - Chip Enable (CE) setup time (ns).
- tCLS - Command Latch Enable (CLE) setup time (ns).
- tALS - Address Latch Enable (ALE) setup time (ns).
- tCLR - Command Latch Enable (CLE) to Read Enable (RE) delay (ns).
- tAR - Address Latch Enable (ALE) to Read Enable (RE) delay (ns).
- tWP - Write Enable (WE) pulse width (ns).
- tRP - Read Enable (RE) pulse width (ns).
- tDS - Data setup time (ns).
- tCH - Chip Enable (CE) hold time (ns).
- tALH - Address Latch Enable (ALE) hold time (ns).
- tWC - Write cycle time (ns).
- tRC - Read cycle time ( ns).
- tREA - (RE) access time (ns).
- Row cycles - number of clock cycles required to program row address.
- Col. cycles - number of clock cycles required to program column address.
- Read 1 com. - command to read page 1st clock cycle (hexadecimal).
- Read 2 com. - command to read page 2nd clock cycle (hexadecimal). Optional (-).
- Read spr. com. - command to read spare area (hexadecimal). Optional (-).
- Read ID com. - command to read chip ID (hexadecimal).
- Write 1 com. - command to program page 1st cycle (hexadecimal).
- Write 2 com. - command to program page 2nd cycle (hexadecimal) . Optional (-).
- Erase 1 com. - command to erase block 1st cycle (hexadecimal).
- Erase 2 com. - command to erase block 2nd cycle (hexadecimal). Optional (-).
- Status com. - status command (hexadecimal).
- ID1 - 1st chip ID - manufacturer (hexadecimal).
- ID2 - 2nd chip ID - device ID (hexadecimal). Optional (-).
- ID3 - 3rd chip ID (hexadecimal). Optional (-).
- ID4 - 4th chip ID (hexadecimal). Optional (-).
- ID5 - 5th chip ID (hexadecimal). Optional (-).
Example Samsung K9F1G08U0E:
! [parallel_nand_chip_db1.jpeg]
![parallel_nand_chip_db2.jpeg]
![parallel_nand_chip_db3.jpeg]
![parallel_nand_datasheet1.jpeg]
![parallel_nand_datasheet2.jpeg]
![parallel_nand_datasheet3.jpeg]
![parallel_nand_datasheet4.j peg]
![parallel_nand_datasheet5.jpeg]
![parallel_nand_datasheet6 .jpeg]
![parallel_nand_datasheet7.jpeg]