Difference between revisions of "Contributing"

From freemyipod.org
Jump to: navigation, search
 
(One intermediate revision by the same user not shown)
Line 8: Line 8:
 
**[http://www.lysator.liu.se/~kjell-e/embedded/ARM-ARM.pdf ARM ARM]
 
**[http://www.lysator.liu.se/~kjell-e/embedded/ARM-ARM.pdf ARM ARM]
 
**http://simplemachines.it has great resources for learning ARM
 
**http://simplemachines.it has great resources for learning ARM
*'''C''' - Used whenever we can avoid using ARM assembly.
+
*'''Rust''' and '''C''' - Used whenever we can avoid using ARM assembly.
*'''Python''' - Python is used often for various scripts we write.
+
*'''Go''' and '''Python''' - Used to implement host-side software like wInd3x and bits of EMcore/Rockbox/...
  
 
==Vulnerabilities==
 
==Vulnerabilities==
If you've ever found a way to get your iPod to crash by corrupting things or inputting weird things, we could use the info to see if the bug is a vulnerability. Some examples of bugs like this are the [[Notes vulnerability]] and the [[Pwnage 2.0]] vulnerability. Right now, we mostly need this for the [[Nano 6G]] / [[Nano 7G]] since we have no means of execution on these device. If you do find such a bug, report it via IRC.
+
 
 +
If you've ever found a way to get your iPod to crash by corrupting things or inputting weird things, we could use the info to see if the bug is a vulnerability. Some examples of bugs like this are the [[Notes vulnerability]] and the [[Pwnage 2.0]] vulnerability.
 +
 
 +
Right now, we mostly need this for the [[Nano 6G]] / [[Nano 7G]] since we have no means of execution on these device. [[OSOS]] bugs in any releases are also appreciated, as they might allow to potentially untether [[wInd3x]].
 +
 
 +
If you find any bug, report it via IRC.
 +
 
 +
==Development==
 +
 
 +
We need an open-source reimplementation of the [[Nano2G FTL|Samsung Whimory FTL]] used in S5L-based iPods. This will allow us to access the FAT/HFS partition on NAND from any open source software. The FTL is a complex piece of software, and it needs a high-quality, clean-room implementation for reliable read/write access.
  
 
==Writing guides==
 
==Writing guides==

Latest revision as of 18:33, 9 January 2023

The first question people generally ask about this project is, "How can I help out?". Here are some ways someone can be useful to the project:

Developing

This is perhaps the most valuable way one can help the project. We get many people who want to help with development but they don't have the necessary skills. If you don't, think of it as an opportunity to learn new and worthwhile skills instead of a roadblock. After all, the best way to learn is in the field doing real work. Here are some topics that developers need to know about:

  • ARM assembly - this is probably the hardest topic for beginners to grasp. Resources:
  • Rust and C - Used whenever we can avoid using ARM assembly.
  • Go and Python - Used to implement host-side software like wInd3x and bits of EMcore/Rockbox/...

Vulnerabilities

If you've ever found a way to get your iPod to crash by corrupting things or inputting weird things, we could use the info to see if the bug is a vulnerability. Some examples of bugs like this are the Notes vulnerability and the Pwnage 2.0 vulnerability.

Right now, we mostly need this for the Nano 6G / Nano 7G since we have no means of execution on these device. OSOS bugs in any releases are also appreciated, as they might allow to potentially untether wInd3x.

If you find any bug, report it via IRC.

Development

We need an open-source reimplementation of the Samsung Whimory FTL used in S5L-based iPods. This will allow us to access the FAT/HFS partition on NAND from any open source software. The FTL is a complex piece of software, and it needs a high-quality, clean-room implementation for reliable read/write access.

Writing guides

Another way to help out is writing guides like these on the Wiki. Make it easier for new users to get information.

Testing

Testers are always good to have, and its also a good way to help out if you don't want to spend much time on the project or don't know much about development. Developers, however, will get tired of working with you if you are clueless about how everything works, so make sure you have a good understanding about the tools you're testing.