Table of Contents
- This method allows you to cover all the possibilities offered by PSNee
This method allows you to cover all the possibilities offered by PSNee
List of equipment
- Arduino board (e.g., Nano or Uno) to act as the ISP programmer
- Your target device to become the modchip (e.g., Nano Pro, ATtiny)
- A soldering iron (the TS_100, found in most Chinese stores, is a good compromise)
- A little soldering wire
- And thin cable (awg26-30)
- BIOS dumper if you want to install it on an old Japanese console
Part 1:
Install the Arduino IDE
Installing the Arduino IDE 2.x provides the necessary environment for the project, with the official tutorial serving as a key resource. The project, which utilizes ATmega 168 microcontrollers, is currently focused on the code injection phase.
https://docs.arduino.cc/software/ide-v2/tutorials/getting-started/ide-v2-downloading-and-installing/
Part 2:
Add a board with the Boards Manager
This step is necessary for ATtinyX5 with ATTinyCore, and ATmega 168/328PB with MiniCore. I generally recommend using these cores as they provide more options and better performance.
These cores can be installed using the boards manager by following these steps:
For MiniCore
https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json
- File->Preferences on a PC, or Arduino->Preferences on a Mac, enter the above URL in "Additional Boards Manager URLs
- Tools -> Boards -> Boards Manager...
- Search for and select "MiniCore by MCUdude" or "ATTinyCore by Spence Konde", then click "Install".
For more details, visit the [Arduino support page] (https://support.arduino.cc/hc/en-us/articles/360016119519-Add-boards-to-Arduino-IDE)
Part 3:
In the Arduino IDE, select the MCU build chain for you ISP programmer, and check that everything works properly by injecting the Blink sketch:
- Connect your board
- File -> example -> 01. Basic -> blink
- Tools -> Board -> Select the Core related to your target -> your board (programmer)
- Tools -> port -> select your board’s port (programmer)
- Tools -> Processor -> your variant (programmer)
- Tools -> programmer -> Your card's programmer
- Sketch -> upload
For ATmega32U4 you can use this diagram, and modify the Blink sketch accordingly (Unlike normal Arduinos, these platforms do not have LED_BUILTIN and you have to add one)
- Tools -> Board -> Arduino AVR Board -> Arduino Yũn (The corresponding core for ATmega32U4)
- ATmega32U4 LED_BUILTIN -> PIN 10
Part 4:
Convert an Arduino into an ISP programmer
- File -> example -> 11.ArduinoISP -> ArduinoISP
- Sketch -> upload
https://docs.arduino.cc/built-in-examples/arduino-isp/ArduinoISP/
Part 5:
Connect your Arduino board or the MCU you want to use as a modchip, to your ISP programmer that you just created, following the schematics.
Here the bling test is less necessary with MiniCore, at the end of the injection it checks that the program has been injected correctly.
Check if your ISP programmer can correctly inject the code into your target, by running the Blink test again:
- File -> example -> 01. Basic -> blink
- Tools -> Board -> Select the Core related to your target -> your MCU for the modchip (target)
- Tools -> Processor -> your MCU variant for the modchip (target)
- Tools -> port -> the port of ISP programmer
- Tools -> programmer -> Arduino as ISP
- Sketch -> upload using a programmer
Normally your target should flash

For ATtiny, and ATmega32U4 you can use this diagram, and modify the Blink sketch accordingly (Unlike normal Arduinos, these platforms do not have LED_BUILTIN and you have to add one)
- ATtiny LED_BUILTIN -> PIN 3
- ATmega32U4 LED_BUILTIN -> PIN 10
Troubleshooting (Common Errors)
-
Error: avrdude: stk500_getsync() attempt X of 10: not in sync
- Check your connections: A jumper wire might be loose.
- Capacitor: If you are using an Arduino Uno as the programmer, you might need a 10µF capacitor between the Reset and GND pins of the programmer (after uploading the ArduinoISP sketch).
- Wrong Port: Verify in Tools -> Port that you have selected the port of your programmer.
-
Error: avrdude: Yikes! Invalid device signature.
- Target Power: Ensure your target MCU is correctly powered by the 5V (or 3.3V) and GND pins of the programmer.
- Wrong Board selected: Double-check that you selected the correct target MCU in Tools -> Board (e.g., ATtiny85 vs ATtiny45).
-
The LED doesn't blink (Blink test)
- Polarity: Check if your LED is connected in the right direction (Long leg is +).
- Wrong Pin: Ensure you modified the sketch for ATtiny (Pin 3) or ATmega32U4 (Pin 10) as mentioned above.
Part 6:
Selecting options in the sketch.
- Select the PSNee.ino file.
- Choose your target console in the first section, "CONSOLE MODEL SELECTION" by uncommenting the appropriate line.
- //#define SCPH_102 -> #define SCPH_102, for example.
To determine your BIOS version, use the BIOS dumper.
Part 7:
Compile and inject the program.
- Sketch -> upload using a programmer
Your PSNee should now be ready to install in your PlayStation.
Part 8:
Install your PSNee in your console following the schematics available in the Wiki.
If your console does not require a BIOS patch, ignore the AX, AY, DX, and RESET pins.
If your console requires a BIOS patch, follow the BIOS pin diagram for the AX, AY, and DX pins.
AY pin is only needed on machines with BIOS V1.0j or V1.1j, SCPH-1000 SCPH-3000.
LED activities during boot with BIOS patch:

Now you can enjoy your delicious pancakes hot off the burner on your PS1 ;P

