Notice: A non well formed numeric value encountered in /sites/ on line 96 Notice: A non well formed numeric value encountered in /sites/ on line 96 Notice: A non well formed numeric value encountered in /sites/ on line 96 Deprecated: Function create_function() is deprecated in /sites/ on line 104 Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /sites/ on line 845 Deprecated: Function create_function() is deprecated in /sites/ on line 111 FS#9340 : patch for openBSD support for rbutilqt



FS#9340 - patch for openBSD support for rbutilqt

Attached to Project: Rockbox
Opened by Brian (empedocles) - Saturday, 30 August 2008, 19:25 GMT
Last edited by Dominik Riebeling (bluebrother) - Saturday, 13 December 2008, 10:11 GMT
Task Type Patches
Category Rbutil
Status Closed
Assigned To No-one
Operating System iPod Nano
Severity Low
Priority Normal
Reported Version Daily build (which?)
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No


The following patches will allow you to build rbutilqt on openBSD for use with the iPod Nano. I have not tested these patches on other BSD's, nor have I tested these patches with other mp3 players.

To compile, you will need:

qt4 (remember to qmake4 instead of qmake)

rockbox dependencies:

a patched version of ipodpatcher (posted earlier on here; currently, having some build issues with development changes to creative.c, so watch out for these)

a partially patched version of sansapatcher (will post later; I currently don't own one, so don't expect the patches to do anything besides getting you through the build process.)

Other dependencies will become apparent during the build.

I assume that the iPod is being mounted this way:

mount -t msdos /dev/sd0j /mnt/ipod

I assume that you are explicitly using type msdos; however, you can replace sd0 with sd followed by any number appropriate to your machine. The patch for ipodpatcher assumes the iPod is being treated as a block device (sd0j form) instead of a raw device (rsd0j form).

Note: The combined.diff combines the above diffs into one file for ease of patching. The voicefile.diff is a hack to get through the build process.
This task depends upon

Closed by  Dominik Riebeling (bluebrother)
Saturday, 13 December 2008, 10:11 GMT
Reason for closing:  Accepted
Additional comments about closing:  committed except the voicefile change as I guess this issue will hit in various other places as well, thus it would be better dealing with it separately.
Comment by Dominik Riebeling (bluebrother) - Sunday, 31 August 2008, 13:25 GMT
I skimmed your diffs and are really puzzled about voicefile.diff -- I see no reason why this change would be needed. Can you please explain this further? Also, I'm a bit surprised that BSD uses "msdos" for mounting the player -- on linux it's "vfat", and I'd expect BSD to use this too -- at least on linux the "msdos" mount option doesn't handle long filenames. Does the BSD "msdos" handle this (I don't have any experience with BSD)?
Comment by Brian (empedocles) - Sunday, 31 August 2008, 17:02 GMT
openBSD uses a older compiler. It's gcc-3.3.5 (with propolice), so I suspect the older compiler had some issues resolving that one line in voicefile.cpp. I still need to look into this further, but to get it working, I figured the hack was a better solution over installing from the ports tree a newer version of gcc. This will just add to the complexity of the build when I finally get around to start setting this up as an actual port.

As for the msdos, that is what BSD uses to mount fat32 file systems. msdos does provide long file name support. If you want explicit support, you need to mount with the -l option. However, if any files in the root directory of the file system being mounted use a long filename, then the -l option is defaulted. Here's some more information:

Comment by Brian (empedocles) - Sunday, 31 August 2008, 18:26 GMT
Some additional information:

sd0 at scsibus1 targ 1 lun 0: <Apple, iPod, 1.62> SCSI0 0/direct removable
sd0: 976MB, 512 bytes/sec, 1999872 sec total

# disklabel sd0
disklabel: warning, DOS partition table with no valid OpenBSD partition
# /dev/rsd0c:
type: SCSI
disk: SCSI disk
label: iPod
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 124
total sectors: 1999872
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # microseconds
track-to-track seek: 0 # microseconds
drivedata: 0

16 partitions:
# size offset fstype [fsize bsize cpg]
c: 1999872 0 unused 0 0
i: 160587 63 unused 0 0
j: 1839221 160650 MSDOS

Now openBSD also offers another msdos filesystem: ntfs. But the ipod nano 1st gen
isn't built with it. I'm not sure about the other ipods.

Comment by Rafaël Carré (funman) - Thursday, 20 November 2008, 13:44 GMT
the only filesystem supported by rockbox is FAT32 (mount -t msdos on OpenBSD), so no need to bother with other filesystems