Skip to content

Commit

Permalink
Merge from upstream (#32)
Browse files Browse the repository at this point in the history
* add link to custom joystick contact pads

* add new pin protection files

* clarify notes, add link to pin protector

* formatting

* add atmega8 config for flashing fuses and firmware with arduino as isp

* update the firmware flashing guide

* update main readme

More thoroughly detail what the project is. Update project status. Add more links to the Wiki.

* update link descriptions

* temporarily remove arduino flashing instructions

* add arduino flashing instructions, fix pin colors

* edit troubleshooting

* main code refactor

Made the code more readable.
Configured the gamepad to be compatible with 030000004c0500006802000010010000 PS3 Controller in the SDL Database.

* mouse refactor

Update the mouse driver to use the new struct with detailed elements

* create shared header

Move the struct to its own file that is referenced by main and mouse, since both programs initialize the exact same struct. This cuts each program down by 60 lines.

* pre-compute the crc table

Instead of calculating it every loop, just generate the while table when the code begins.

* optimize uinput for performance

Batch all of the input updates and write them at once.

* work with local copy of data instead of shared memory

* clean up the dimming function

* prevent unnecessary uinput updates

Only run the function when actual gamepad data changes

* reduce uinput writes

Only update the data that changed

* add extrabuttons argument

This --extrabuttons argument enables the two buttons that are soldered to the board. Includes the ability to specify trigger or stick. Trigger will map the buttons as the PS3 triggers. Stick will map them as PS3 joystick buttons.

* add bookworm overlays for dpi

Bookworm requires KMS, and it has its own implementation of DPI.
Doesn't work correctly on Pi5/CM5 yet raspberrypi/linux#6505

* add the touchscreen driver

* split extrabuttons and joystick commands

Allows the extra buttons to be used regardless of whether the extra joysticks are enabled

* add the latest binaries

---------

Co-authored-by: othermod <[email protected]>
  • Loading branch information
CoryManson and othermod authored Feb 11, 2025
1 parent 4033454 commit 224e638
Show file tree
Hide file tree
Showing 28 changed files with 10,498 additions and 9,645 deletions.
98 changes: 64 additions & 34 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,54 +1,84 @@
# PSPi 6
# PSPi 6: Raspberry Pi in a PSP

![PSPi](https://othermod.com/wp-content/uploads/IMG_8727.jpg)

Welcome to the PSPi 6 GitHub repository! This project is a combination of hardware and software development aiming to retrofit a PSP with almost every type of Raspberry Pi.
This is my passion project that transforms the classic PSP 1000 into a modern handheld using a Raspberry Pi. This page documents the combination of hardware and software development.

## Getting Started
## 🎮 What is PSPi 6?

Get up and running and get more detailed information on the [PSPi 6 wiki](https://github.com/othermod/PSPi-Version-6/wiki).
PSPi 6 is a custom circuit board that replaces the mainboard of a PSP 1000, allowing you to use a Raspberry Pi as its brain. This means you can:

## Compatibility
- Play retro games and emulators
- Run full Linux distributions and use it as a portable computer
- Use most software that works on a Raspberry Pi

**PSP Compatibility:** Fits the original PSP 1000 model.
## ✨ Key Features

**Raspberry Pi Compatibility:** Electrically compatible with all 40-pin Raspberry Pis, with physical fit for the Raspberry Pi Zero, Zero 2W, and CM4 (when using the CM4 Carrier).
- **Display**: High quality [800x480 LCD](https://othermod.com/product/4-3-800x480-lcd/) with adjustable brightness
- **Power Management**: Efficient charging, real-time battery monitoring, and power-saving modes
- **Audio**: Play audio through the PSP speakers or headphones
- Control volume and mute using the PSP buttons
- *Note: The Pi Zero and CM4 Carrier give mono audio. The Universal Carrier is planned to output stereo*
- **Controls**: All original PSP buttons and joystick are used
- The board allows for two extra buttons and an extra joystick
- **Indicators**: LED indicators and on-screen display for system status
- **Open Design**: Customizable open-source hardware under Creative Commons license

**Operating System Compatibility:** Compatible with RetroPie, Lakka, Ubuntu, Raspberry Pi OS, Batocera, Kali, and more. The full list of premade images is on the [Operating Systems](https://github.com/othermod/PSPi-Version-6/wiki/Operating-Systems) page.
For a comprehensive list of features and technical details, please visit the [Features Wiki Page](https://github.com/othermod/PSPi-Version-6/wiki/1.-Features).

## Features Overview
## 🧩 Compatibility

- **Video and Display:** High-resolution LCD support, adjustable brightness, and on-screen display features.
- **Power Management:** Efficient charging, graceful power on/off controls, and power status indicators.
- **Audio:** Enhanced audio quality with headphone integration and volume control.
- **Input/Output:** User-friendly buttons and switches for control, with LED indicators for system status.
- **PSP Model**: Works exclusively with PSP 1000 series. Visit the [PSP Compatibility Wiki Page](https://github.com/othermod/PSPi-Version-6/wiki/2.-PSP-Compatibility) page for more details
- **Raspberry Pi**:
- Fits Raspberry Pi Zero, Zero 2W, and CM4 (with CM4 Carrier board)
- Electrically compatible with all 40-pin Raspberry Pis, but only the Zero/Zero 2 fit into the shell
- The [Raspberry Pi Compatibility Wiki Page](https://github.com/othermod/PSPi-Version-6/wiki/3.-Raspberry-Pi-Compatibility) will help you decide which Raspberry Pi model you want to use.
- **Operating Systems**: RetroPie, Lakka, Ubuntu, Raspberry Pi OS, Batocera, Kali, and more!

For a complete list of features, please visit the [Features](#) page.
## 🚀 Getting Started

## Items Needed
To get started with PSPi 6, you'll need various items categorized into Genuine PSP 1000 Series Parts, PSPi 6 Components, and Optional Parts. For a detailed list, refer to the [Components Required](https://github.com/othermod/PSPi-Version-6/wiki/Components-Required) page.
- **Gather Components**: Check the [Components Required Wiki Page](https://github.com/othermod/PSPi-Version-6/wiki/4.-Components-Required) for a full list.
- **Assembly**: Follow the guides on the [Board Installation Wiki](https://github.com/othermod/PSPi-Version-6/wiki/5.-Board-Installation). Video tutorials are available, and a full guide is in the works.
- **Software Setup**: Use the [Operating Systems Wiki Page](https://github.com/othermod/PSPi-Version-6/wiki/6.-Operating-Systems) to install your chosen OS.

## Troubleshooting
Run into a snag? Check out the [Troubleshooting](https://github.com/othermod/PSPi-Version-6/wiki/Troubleshooting) page for common issues and their solutions.
Having issues? Visit the [Troubleshooting Wiki Page](https://github.com/othermod/PSPi-Version-6/wiki/Troubleshooting).

## Resources
- [**Code for Raspberry Pi**](https://github.com/othermod/PSPi-Version-6/tree/main/drivers): Essential code for integrating the Raspberry Pi and Atmega.
- [**Firmware for Atmega**](https://github.com/othermod/PSPi-Version-6/tree/main/atmega): Firmware for the Atmega8a microcontroller within the PSPi.
- [**PCB and Schematics**](https://github.com/othermod/PSPi-Version-6/tree/main/boards): Design files and schematics, also available on [EasyEDA](https://oshwlab.com/adamseamster/pspi-zero-version-5_copy_copy).
## 📁 Project Resources

## Ordering
You can order the boards directly from the manufacturer; however, the project is ongoing and subject to changes. Boards will also be available on my website upon completion.
- **[Raspberry Pi Code](https://github.com/othermod/PSPi-Version-6/tree/main/drivers)**: Drivers and software for the Raspberry Pi.
- **[Atmega Firmware](https://github.com/othermod/PSPi-Version-6/tree/main/atmega)**: Code for the Atmega8a microcontroller that manages power and inputs.
- **[PCB and Schematics](https://github.com/othermod/PSPi-Version-6/tree/main/boards)**: Hardware design files for those who want to manufacture boards modify the design.

## Status
PSPi 6 development is done, and I'm now shipping small batches of boards to early adopters while working on guides and documentation.
## 🛒 How to Get a PSPi 6

## Community and Contributions
This project is a one-man-show, but any help or input is welcome and appreciated. Whether you are a designer, coder, tester, or just someone with ideas to share, your contributions are highly valued. You can also contribute by spreading the word and sharing the project with others, or by supporting monetarily.
1. **Buy a Ready-Made Board**: Available now at [othermod.com](https://othermod.com/product/pspi-6-board/). Perfect for those who want more of a plug-and-play experience.

## Stay Connected
- [**Discord**](https://discord.gg/V96c3JC): Join for the latest discussions and updates.
- [**YouTube**](https://youtube.com/othermod): Subscribe for video updates and demonstrations.
- Feel free to [**reach out**](https://linktr.ee/othermod) if you have any thoughts, suggestions, or ideas.
2. **Make Your Own**: You can use the provided PCB files to manufacture your own board:
- Download the design files from the [boards folder](https://github.com/othermod/PSPi-Version-6/tree/main/boards).
- Send the files to a PCB manufacturer of your choice. I use [JLCPCB](https://jlcpcb.com/?from=othermod) for every board I sell.
- Source the components and assemble the board yourself.

## License
The hardware design of PSPi 6 is open-source under the Creative Commons (CC BY-SA) license. Feel free to share and adapt the material, respecting the CC BY-SA requirements.
Note: This option requires advanced skills in electronics and soldering.

## 🚧 Project Status

PSPi 6 board development is complete and boards are shipping. I do sometimes make minor changes to the board, but nothing that affects the important features. I'm continually improving documentation and working on guides to help users get the most out of their PSPi 6.

## 🤝 Community and Contributions

While PSPi 6 is primarily my personal project, I welcome contributions from the community. Whether you're a coder, designer, or just have great ideas, your input can help make PSPi 6 even better. Here's how you can contribute:

- Report bugs or suggest features
- Join the Discord and share your mods or help others with troubleshooting.
- Help improve documentation and guides
- Spread the word about the PSPi 6!

## 📢 Stay Connected

- [**Discord**](https://discord.gg/V96c3JC): Join the community for discussions, support, and sharing your builds.
- [**YouTube**](https://youtube.com/othermod): Subscribe for video tutorials and project updates.
- [**Contact**](https://linktr.ee/othermod): Reach me on various platforms.

## 📜 License

The PSPi 6 hardware design is open-source under the Creative Commons (CC BY-SA) license. You're free to share and adapt the material, as long as you give appropriate credit.
Loading

0 comments on commit 224e638

Please sign in to comment.