Support and General Use > Hardware

iFlash Solo – perfectly reliable iPod/sd-card combos

(1/2) > >>

chris_s:
I had long resigned myself to using CF cards with Rockbox for perfectly stable operation on iPods but was surprised today to find after some fairly extensive testing that the latest dev build of Rockbox seems to work flawlessly (including USB transfers and database functionality) on an iPod 4G with an iFlash Solo SD card adapter and an 16GB SD card with only two minor code modifications:

- disable DMA (which is necessary on that device regardless of storage method for stable long-term operation)
- always return 0 for ata_disk_is_active in firmware/drivers/ata.c (otherwise the shutdown process will stall and timeout after ~15s) – I don't think this should have a negative effect?

That exact combination of components was extremely unreliable when running Rockbox just ~2 years ago. Apparently there's been some work done on the ata timings (and possibly something else?) since then, specifically with respect to the iFlash Solo?

This actually makes me wonder if it's now safe to order a large (512GB) SD card or whether I will once again run into problems then. Is the type or size of SD card supposed to make much of a difference? I've ordered a 512B Samsung EVO Select card to try my luck with it this weekend. Ideally, the setup would also work on an iPod video . All of this brings me to ask whether there are now *confirmed* combinations of hardware components that work flawlessly together. I.e. a certain iPod with a certain adapter and certain SD card using a recent build (possibly with some minor modifications). What I'm looking for is rock-solid, flawless long-term operation even using the database which my 256GB 4G CF-based Pod (with DMA disabled) has given me over the years. I thought for the longest time that there was no way to achieve this  using SD cards and Rockbox without a lot of hacking, but this recent experience seems to indicate otherwise?

chris_s:
Success! My Samsung EVO Select 512GB (supposedly identical to Samsung EVO Plus) arrived yesterday and I copied 400GB of songs to it, some using Rockbox’s USB mode and some using the OF, simply because the latter was faster (probably) due to the use of DMA.

In the few hours I’ve tested since then, I’ve had not an inch of trouble. Everything works perfectly so far, including database functionality, Rockbox USB transfer and playback of any transferred files.

Looks like the ATA timings in combination with the power management changes (+x ?) made all the difference. A million thanks to the Rockbox developers involved!

I’ll go back to this post to update it in case I encounter any problems, but so far it looks like I can recommend this particular setup at this time:

Hardware: iPod 4th generation (grayscale)
Adapter used: iFlash Solo (from 03/2018, not sure if there’ve been changes since then)
Cards tested:

* (2021) Samsung EVO Select 512GB microSD (supposedly identical to Samsung EVO Plus)
* Sandisk Ultra 16GB microSD Build: Current developer build (422aa56243) with modifications as described in the OP

I’ll be testing the adapter and card on an iPod video in a few days to see if it works just as well on that hardware using the latest build.

chris_s:

--- Quote from: chris_s on February 13, 2021, 08:55:48 AM ---I’ll be testing the adapter and card on an iPod video in a few days to see if it works just as well on that hardware using the latest build.

--- End quote ---
Didn't turn out to be the case, unfortunately. I'm getting data corruption on an Ipod video when doing USB transfers using Rockbox on the latest build. Disabling DMA didn't seem to help, either. Kind of disappointing :/ The iPod 4G on the other hand still works great.

nvandoorn:
Hey @chris_s hope you're well.

Are you still using this setup on your 4th gen iPod in current times? I just finished compiling my own build for my 4th gen iPod photo with the changes you describe and unfortunately I'm still having issues. I'm building against the latest development version (6e058fe77f48dc66a032de0a1e1cf495f85fe98f), and using an iFlash Solo with a 512GB Kingston Canvas card, which is from the iFlash approved list.

Here is the patch I've been using to test. I also confirmed my iPod is showing the right commit hash for the build.

commit d2cb7c2d01940f7c1d64b3b07f9b83d274eab57f
Author: Nick Van Doorn <nick@nv.delivery>
Date:   Tue Mar 26 15:22:32 2024 -0700

    Patch for iFlash on ipod color

diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c
index 1c85b7bd5f..06a478bccc 100644
--- a/firmware/drivers/ata.c
+++ b/firmware/drivers/ata.c
@@ -892,7 +892,7 @@ void ata_spindown(int seconds)
 
 bool ata_disk_is_active(void)
 {
-    return ata_state >= ATA_SPINUP;
+    return 0;
 }
 
 void ata_sleepnow(void)
diff --git a/firmware/export/config/ipodcolor.h b/firmware/export/config/ipodcolor.h
index 93bea58daa..59beaa1a2a 100644
--- a/firmware/export/config/ipodcolor.h
+++ b/firmware/export/config/ipodcolor.h
@@ -98,10 +98,6 @@
 #define AB_REPEAT_ENABLE
 #define ACTION_WPSAB_SINGLE ACTION_WPS_BROWSE
 
-/* define this if you have a disk storage, i.e. something
-   that needs spinups and can cause skips when shaked */
-#define HAVE_DISK_STORAGE
-
 /* Define this for LCD backlight available */
 #define HAVE_BACKLIGHT
 #define HAVE_BACKLIGHT_BRIGHTNESS
@@ -159,9 +155,6 @@
 /* Define this if you want to use the PP5020 i2c interface */
 #define CONFIG_I2C I2C_PP5020
 
-/* We're able to shut off power to the HDD */
-#define HAVE_ATA_POWER_OFF
-
 /* define this if the hardware can be powered off while charging */
 //#define HAVE_POWEROFF_WHILE_CHARGING
 
@@ -211,14 +204,6 @@
 #define IPOD_ACCESSORY_PROTOCOL
 #define HAVE_SERIAL
 
-
-/* DMA is used only for reading on PP502x because although reads are ~8x faster
- * writes appear to be ~25% slower.
- */
-#ifndef BOOTLOADER
-#define HAVE_ATA_DMA
-#endif
-
 /* Define this, if you can switch on/off the lineout */
 #define HAVE_LINEOUT_POWEROFF

nvandoorn:
Never-mind! I think one of the last changes I made must have fixed this. I was writing this post before I removed "#define HAVE_DISK_STORAGE" and "#define HAVE_ATA_POWER_OFF"

I should try turning DMA back on...

Navigation

[0] Message Index

[#] Next page

Go to full version