Details

On iPod, plugging in the USB port with the HOLD button ON results in a configuration reset - all settings are erased. This is extremely confusing, albeit discouraging for new users, and should be eliminated completely, as a default at least. Such a "feature" belongs only in an advanced/debug mode where one is fearful that the wrong setup can lock up the unit.

The problems being this:
Rockbox is ENTIRELY debug on iPod right now. So, discouraging for users maybe, but a necessity. If a user improperly installs Rockbox (doesn't copy over all the files) or uses one of the MANY experimental builds, or has a crash at a bad time, a bad config block can easily exist. As well, they could change their settings so that the text is unreadable (different language, bad font, bad color choices.) Under all of these circumstances, the menu may not be navigable (up to and including freezing immediately after loading configuration). That being said, it's necessary for all users to have access to this feature, and not have to load a debug build on their unit just for the purpose of clearing settings.

I disagree somewhat with your appreciation of Rockbox being ENTIRELY debug. The status page "http://www.rockbox.org/twiki/bin/view/Main/IpodStatus" says for iPod color, nano and Video: "Very stable. Most (but not all) Rockbox features and plugins are working, but there are still a small number of important features unimplemented." We need to do things in a way that facilitates adoption for new users, so Rockbox grows and gains momentum. Our goal is to make that somewhat optimistic statement ("Very stable") on the status page a reality for the adventurous user. Surely we can come up with something better to do emergency reset of setups: from the installer? by wiping out the setup partition? by plugging in your USB while holding the REWIND key?

I think everyone agrees that using HOLD to reset the settings is far from perfect - that's not being debated. A patch to implement another method would be very welcome.

However, this would need to be a standalone solution (i.e. a user without their USB cable and a computer handy might still need to reset their settings) and needs to be as effective as the hold switch solution in dealing with all possible scenarios.

The main issue someone trying to change this would face, which could possibly be solved with investigation of the button hardware in the ipods (or maybe it can't be solved...) is that the Rockbox button driver can't detect buttons pressed before Rockbox starts. This rules out the use of other keys to reset settings. The hold switch was chosen because it's easy to detect - it's just attached to a GPIO pin and its state can be read at any time.

Yes, we could probably not reset settings if the USB cable is inserted with the hold switch on, but that would cause Rockbox to reboot into disk mode. When the user subsequently disconnects the USB cable, Rockbox would then start (with the hold button on and no USB cable) and clear the settings...

On some players, isn't holding record from boot-time "Boot into original firmware" but if you press it a bit later, but before Rockbox actually boots, it's "clear settings"?

Why not make the Hold Switch the toggle for the original firmware to boot. That would mean that it's physically impossible to get past the bootloader with the hold switch on (and also makes it really easy for the Nano users to get into the original firmware for USB purposes) but you can still clear the settings by turning the hold switch on after the bootloader displays, right?

It does mean everyone needs to update their bootloader (which will need to happen anyway once we get the COP working), and we'll need to see how much time a user is given to turn the hold switch on - i.e. the time between the check in the bootloader and the check in Rockbox itself.

I wondered why my configuration kept getting reset! I was starting to think that rockbox was just a bit crap and kept losing my settings. Now I understand.

I have to say that this particular option is not a very good from a usability point standpoint. Most of the time, I take my iPod out of my bag and stick it straight into the dock - with the hold button still on. Then I leave it to charge and perhaps sync some new content onto it. Then I expect to pick it up, wait for the reboot and play - except I have to reload my settings first.

I think it would be better to modify the existing method of booting into the original firmware. Instead, holding 'Menu' on boot could display a menu with the following options:

I searched for this bug, but didn't find it somehow so I opened a new bug, FS#6432 which was quickly and correctly closed. I included some comments in there that may be useful.

I like Damian's suggestion. The problem, as mentioned, is that loading up default settings is destructive (removes all the hard work I did setting the thing up).

Another option (assuming that hold isn't hardware, but is actually just a stateful button):
* Turn on 'hold'
* Press and hold 'select'
* Turn off 'hold'

This allows a reset while the OS is running and is sufficiently uncommon that it shouldn't pose a problem. Also, since it only happens while Rockbox is fully running, you can use the nice dialog for reset that exits now.

Possible problems:
* If there are settings that can make Rockbox unbootable or unable to work well enough to even do the above steps.
* If you can't detect presses while hold is on.