Unoffical empeg BBS

Quick Links: Empeg FAQ | RioCar.Org | Hijack | BigDisk Builder | jEmplode | emphatic
Repairs: Repairs

Topic Options
#33657 - 01/07/2001 02:08 unsorted menus hack
borislav
addict

Registered: 30/04/2000
Posts: 420
Loc: Sunnyvale, CA, USA
The alphabetical sorting of playlist menus has been debated to death (thread, thread) but no resolution seems to be forthcoming. So...

The attached menusort executable can turn the sorting on/off. Here are semi-detailed instructions on how to use it:

- save the attachment as menusort somewhere on your computer
- install the developer player software (1.03 and 1.02 should work)
- connect via a serial cable to the empeg, e.g. with Hyperterminal (115200 bps / 8 data / no parity / 1 stop / no flow control)
- press q then Enter to get to a bash prompt
- type rw to enable read-write mode
- type rz to start the Zmodem file receive program
- use "Send File" from Hyperterminal to send menusort to the empeg
- type chmod a+x menusort to make menusort executable
- run ./menusort off to turn sorting off, or ./menusort on to turn it back on, or just ./menusort to find out what the current state is
- type ro to switch the disk back to read-only mode
- type exit

I've tested this on a mk2 with the 1.03 release. I'll be interested to hear whether it works on a mk1.

Enjoy.

Borislav



Attachments
32844-menusort (161 downloads)


Top
#33658 - 01/07/2001 03:08 Re: unsorted menus hack [Re: borislav]
bonzi
pooh-bah

Registered: 13/09/1999
Posts: 2401
Loc: Croatia
Hey, how did you pull this off!? By running the player under debugger to identify call to sort routine? Something simpler? Amazing!

Cheers!

Dragi "Bonzi" Raos
Zagreb, Croatia
Q#5196, MkII#80000376, 18GB green
_________________________
Dragi "Bonzi" Raos Q#5196 MkII #080000376, 18GB green MkIIa #040103247, 60GB blue

Top
#33659 - 01/07/2001 21:34 Re: unsorted menus hack [Re: bonzi]
dmz
journeyman

Registered: 15/09/1999
Posts: 91
Loc: Pasadena, California, USA
Amazing!

I second that emotion; I've been hoping for something like this since, well, since they made it sort alphabetically, really... :)

Can't wait to try it on both my players when I get to a machine with the proper cabling available.

-----
Daniel M. Zimmerman, Caltech Computer Science
Mk.2 #060000058, 36GB
Mk.1 #00101, 10GB
_________________________
Daniel M. Zimmerman Mk.2 #060000058, 36GB Mk.1 #00101, 10GB

Top
#33660 - 01/07/2001 21:45 Re: unsorted menus hack [Re: borislav]
tfabris
carpal tunnel

Registered: 20/12/1999
Posts: 31600
Loc: Seattle, WA
Amazing. I am speechless. I have no idea how you pulled it off. Care to enlighten us?

___________
Tony Fabris
_________________________
Tony Fabris

Top
#33661 - 02/07/2001 02:31 Re: unsorted menus hack [Re: borislav]
Henno
addict

Registered: 15/07/1999
Posts: 568
Loc: Meije, Netherlands
The attached menusort executable can turn the sorting on/off.

Thanks Borislav! I've been among the *many* waiting for this.

So far, I've managed to move menusort to the player, but something is keeping me from running it. Anyone out here who can help?

I think that I've managed to put the file onto the player and succesfully changed its attributes such that it now sits there (developer image 1.03) as an executable (if I guess the purpose of the chmod command correctely). This is what's on the player now:

empeg:/empeg/bin# ls -l
total 1106
-rwxr-xr-x 1 0 0 117 Jun 23 15:38 g
-rwx--x--x 1 0 0 4125 Jul 2 08:09 menusort
-rwxr-xr-x 1 0 0 1120144 Jun 23 15:38 player


But 'menusort' won't run. Everytime I type 'menusort' or './menusort', bash responds with 'Is a directory'. Like this:
empeg:/empeg/bin# ./menusort
bash: ./menusort: Is a directory


What am I doing wrong?

Henno
mk2 6 nr 6
_________________________
Henno mk2 [orange]6 [/orange]nr 6

Top
#33662 - 02/07/2001 03:02 Re: unsorted menus hack [Re: Henno]
borislav
addict

Registered: 30/04/2000
Posts: 420
Loc: Sunnyvale, CA, USA
-rwx--x--x 1 0 0 4125 Jul 2 08:09 menusort

This doesn't look right - menusort should be 4104 bytes long, not 4125. Maybe it got corrupted somewhere on the way to the empeg? The bash error message still doesn't make sense, but I'd try correcting this first.

Borislav



Top
#33663 - 02/07/2001 04:06 Re: unsorted menus hack [Re: bonzi]
borislav
addict

Registered: 30/04/2000
Posts: 420
Loc: Sunnyvale, CA, USA
Hey, how did you pull this off!? By running the player under debugger to identify call to sort routine? Something simpler? Amazing!

Hehe.

I'm afraid it wasn't anything as heroic as stepping through the player one instruction at a time or reading and understanding the entire disassembled code.

Empeg publishes a partially linked player binary on their website (due to the licensing requirements of the GNU C library). I was quite surprised to find that they hadn't stripped their own symbols from that binary, so it contains many function names from the empeg source code. (I just hope I don't regret mentioning this here.) Looking through them, there were several functions with names like _introsort_loop__H3ZP8MenuItem and sort_heap__H1ZP8MenuItem (the cryptic suffixes are due to the C++ compiler "feature").

Rather than trying to read the code and figure out which of these functions calls which and when, I decided to try and get a stack trace at the point when they are called, that would immediately tell me which is the top-level sort function. I wrote a little wrapper around the strcasecmp library function that the player uses to compare the strings. Trying to put a breakpoint on that and get a backtrace with gdb got me nowhere (gdb has issues with threaded executables, and the ptrace system call that lets me attach to a process later on was also not working). So I printed the stack contents in the wrapper function and walked up the call chain manually.

A few levels up from my wrapper was a function called Sort__4Menui. I hadn't noticed it before since I searched for "sort", lowercase "s" - duh. I looked at the disassembly of that function and the first thing it does is something like "if (whatever) return;". It doesn't get any simpler than that - I just had to change the conditional branch to unconditional and the function will never do anything. At this point I took out my ARM book ("ARM system-on-chip architecture" by Steve Furber - highly recommended) and figured out the hex codes I needed to change (it was only one byte change). I tried the resulting binary and sure enough I got unsorted menus!

It was getting late that night so I left it at that. Next morning I woke up all worried. OK, I get unsorted menus, but are they actually in playlist order, or in some other order (e.g. FID order, upload order, random)? I did some tests with emplode, sorting my playlists in various ways and they all seemed to come out OK. Phew. Then I just had to write a small utility that can tweak that one byte back and forth, post on the BBS and wait for the applause.

Now let's see what other intersting symbol names they have in there...

Borislav


Top
#33664 - 02/07/2001 04:49 Re: unsorted menus hack [Re: borislav]
fvgestel
old hand

Registered: 12/08/2000
Posts: 702
Loc: Netherlands
Very cool hack indeed. Now I've got to get gdb to understand breakpoints...

Frank van Gestel
_________________________
Frank van Gestel

Top
#33665 - 02/07/2001 05:19 Re: unsorted menus hack [Re: borislav]
Henno
addict

Registered: 15/07/1999
Posts: 568
Loc: Meije, Netherlands
menusort should be 4104 bytes long, not 4125

I've just saved '32844-menusort' again, and it is *again* 4125 bytes long. The funny thing is that when I click on the attachment to your original post, my Netscape attempts to display the contents. When I use the 'Save link as' option, it saves it as 32844-menusort.html (!) with the 4125 length.

Anything wrong with my browser settings?

Henno
mk2 6 nr 6
_________________________
Henno mk2 [orange]6 [/orange]nr 6

Top
#33666 - 02/07/2001 05:48 Re: unsorted menus hack [Re: Henno]
fvgestel
old hand

Registered: 12/08/2000
Posts: 702
Loc: Netherlands
try clearing your cache before using "save as". Or try pressing shift while left-clicking the link

Frank van Gestel
_________________________
Frank van Gestel

Top
#33667 - 02/07/2001 09:53 Re: unsorted menus hack [Re: fvgestel]
Henno
addict

Registered: 15/07/1999
Posts: 568
Loc: Meije, Netherlands
try clearing your cache before using "save as". Or try pressing shift while left-clicking the link

Doesn't make any difference. It's still 4125 bytes long (both cases). Note that when pressing shift while left-clicking the link, it offers to save the link as text, or HTML. No other options. Is this normal?

--- 15 minutes later;
Made another attempt using Exploder, which downloaded 4104 bytes. Will try with the Exploder file, but am still puzzled why Netscape wouldnt download it correctly. Any ideas anyone?

--- another 15 minutes later:
The 4104 file works fine and the playlists are exactly in the order used in emplode!. Quickly tried the direct searches and everything seems to work fine. Can't see any difference (yet). Great hack Borislav! Thanks!



Henno
mk2 6 nr 6

Edited by Henno on 02/07/01 06:26 PM.

_________________________
Henno mk2 [orange]6 [/orange]nr 6

Top
#33668 - 02/07/2001 10:12 Re: unsorted menus hack [Re: Henno]
Roger
carpal tunnel

Registered: 18/01/2000
Posts: 5683
Loc: London, UK
HTTP/1.1 200 OK

Date: Mon, 02 Jul 2001 17:09:46 GMT
Server: Apache/1.3.14 (Unix) PHP/4.0.4pl1 mod_ssl/2.7.1 OpenSSL/0.9.5a
Last-Modified: Sun, 01 Jul 2001 09:08:15 GMT
Etag: "185fa-1008-3b3ee87f"
Accept-Ranges: Bytes
Content-Length: 4104
Content-Type: text/plain
Age: 0
Connection: close
Via: HTTP/1.1 cam (Traffic-Server/3.0.3FCS [uScMsSfWpSeN:t cCMi p sS])


Use a different browser.


Roger - not necessarily speaking for empeg
_________________________
-- roger

Top
#33669 - 02/07/2001 10:14 Re: unsorted menus hack [Re: Henno]
mtempsch
pooh-bah

Registered: 02/06/2000
Posts: 1996
Loc: Gothenburg, Sweden
I suspect a linefeed problem, when looking at the file it contains 21 linefeeds, and that is how
much it grows. If you're downloading on Windows it mistakenly thinks it's text and converts any
linefeed characters embedded in the file to Windows style (CRLF)...

I'm attaching a zipped up version of the file, maybe windows will recognize that and do the
right thing...

/Michael



Attachments
32934-menusort.zip (56 downloads)

_________________________
/Michael

Top
#33670 - 02/07/2001 10:18 Re: unsorted menus hack [Re: mtempsch]
Roger
carpal tunnel

Registered: 18/01/2000
Posts: 5683
Loc: London, UK
it mistakenly thinks.

No "mistakenly" about it -- the webserver said that it was text. See my earlier posting.



Roger - not necessarily speaking for empeg
_________________________
-- roger

Top
#33671 - 02/07/2001 10:29 Re: unsorted menus hack [Re: Roger]
mtempsch
pooh-bah

Registered: 02/06/2000
Posts: 1996
Loc: Gothenburg, Sweden
Yes, I see that now... Baaad Apache!

But, when in doubt, blame Microsoft - you'll be right most of the time

/Michael

_________________________
/Michael

Top
#33672 - 02/07/2001 10:30 Re: unsorted menus hack [Re: mtempsch]
Henno
addict

Registered: 15/07/1999
Posts: 568
Loc: Meije, Netherlands
Am attaching a zipped up version of the file

Yep! Also 4104 bytes. No problem.
Ams still puzzled why Netscape would interpret the linefeeds as data . . .

Henno
mk2 6 nr 6
_________________________
Henno mk2 [orange]6 [/orange]nr 6

Top
#33673 - 02/07/2001 10:35 Re: unsorted menus hack [Re: mtempsch]
Henno
addict

Registered: 15/07/1999
Posts: 568
Loc: Meije, Netherlands
when in doubt, blame Microsoft

Are you saying that MS *should* have dowloaded 4125 bytes, but did it right because it misinterprets the content type ? ? ?

Henno
mk2 6 nr 6
_________________________
Henno mk2 [orange]6 [/orange]nr 6

Top
#33674 - 02/07/2001 11:11 Re: unsorted menus hack [Re: borislav]
tfabris
carpal tunnel

Registered: 20/12/1999
Posts: 31600
Loc: Seattle, WA
Then I just had to write a small utility that can tweak that one byte back and forth, post on the BBS and wait for the applause.



(Closest I could come to applause in the BBS markup language.)


One question: The byte-tweaker... Does it just pick a specific byte offset in the file, or does it do a "search" for the bytes around it, or both?

I'd hate to think someone running it against a 1.02 player could crash their player software.

___________
Tony Fabris
_________________________
Tony Fabris

Top
#33675 - 02/07/2001 11:20 Re: unsorted menus hack [Re: Henno]
tfabris
carpal tunnel

Registered: 20/12/1999
Posts: 31600
Loc: Seattle, WA
Am still puzzled why Netscape would interpret the linefeeds as data . . .

This is a standard problem with downloading files that aren't in the server's "MIME types" list.

For a while, Empeg's own support site didn't have the ".upgrade" file in its MIME types, so anyone downloading an upgrade file with Netscape got a corrupted file.

You never know when it's going to happen, because any server could have its MIME types screwed up.

My solution? I've quit downloading files with web browsers altogether. I use GetRight exclusively for all my downloads. It never has this problem.

___________
Tony Fabris
_________________________
Tony Fabris

Top
#33676 - 02/07/2001 14:10 Re: unsorted menus hack [Re: tfabris]
borislav
addict

Registered: 30/04/2000
Posts: 420
Loc: Sunnyvale, CA, USA
One question: The byte-tweaker... Does it just pick a specific byte offset in the file, or does it do a "search" for the bytes around it, or both?

It's reasonably paranoid - it searches for 64 bytes around the one it wants to tweak. It only does it if it finds exactly one instance of those bytes. If it does break your player you can always tweak the byte back to fix it. It should be quite safe.

Borislav



Top
#33677 - 02/07/2001 14:21 Re: unsorted menus hack [Re: Roger]
borislav
addict

Registered: 30/04/2000
Posts: 420
Loc: Sunnyvale, CA, USA
Content-Type: text/plain

Argh. OK, that makes sense. The fact that netscape tries to display the file should have made me suspicious...

Thanks,
Borislav



Top
#33678 - 02/07/2001 14:50 Re: unsorted menus hack [Re: borislav]
EngelenH
enthusiast

Registered: 29/09/2000
Posts: 313
Loc: Belgium/Holland
In reply to:


post on the BBS and wait for the applause.




That will have to wait until that splitting headache I got from reading your post. I have no idea what you said.



No seriously cool stuff. Hugo is likely to skin you alive though.

Cheers,
Hans


Mk2 - Blue & Red - 080000431
_________________________
Mk2 This message will selfdestruct in 5 seconds to prevent reproduction.

Top
#33679 - 02/07/2001 14:50 Re: unsorted menus hack [Re: tfabris]
TommyE
enthusiast

Registered: 08/06/1999
Posts: 356
Loc: NORWAY
I was about to write something similar.
I use FlashGet though, abit different, but similar.

Check out http://www.amazesoft.com/

TommyE


Top
#33680 - 02/07/2001 15:20 Re: unsorted menus hack [Re: Henno]
Captain_Chaos
member

Registered: 18/11/2000
Posts: 126
Loc: Amersfoort, The Netherlands
> > when in doubt, blame Microsoft
> Are you saying that MS *should* have dowloaded 4125 bytes, but did it right because it misinterprets the content type ? ? ?

No, MS should have downloaded 4125 bytes, but did it wrong because it misinterprets the content type...

The webserver is telling it that it's a plain text file. When downloading a text file, a browser should adapt the line endings in the file to the local custom. UNIX uses single LF characters (0x0A), DOS uses CRLF pairs (0x0D0A), so Netscape correctly adds a CR to any single LF it finds, which is why the file is bigger, and also why it doesn't work anymore...

The problem here is that the webserver is not configured correctly. It should be reporting a binary content type such as application/x-octetstream. It's the webserver's resposibility to determine the type of a file, not the web browser's...


Top
#33681 - 02/07/2001 15:32 Re: unsorted menus hack [Re: Captain_Chaos]
EngelenH
enthusiast

Registered: 29/09/2000
Posts: 313
Loc: Belgium/Holland
That headache of mine is not getting better

Hans


Mk2 - Blue & Red - 080000431
_________________________
Mk2 This message will selfdestruct in 5 seconds to prevent reproduction.

Top
#33682 - 02/07/2001 16:21 Re: unsorted menus hack [Re: borislav]
bonzi
pooh-bah

Registered: 13/09/1999
Posts: 2401
Loc: Croatia
I didn't know about partially linked player object module, but still amazing hack! Congratulations again!

Dragi "Bonzi" Raos
Zagreb, Croatia
Q#5196, MkII#80000376, 18GB green
_________________________
Dragi "Bonzi" Raos Q#5196 MkII #080000376, 18GB green MkIIa #040103247, 60GB blue

Top
#33683 - 03/07/2001 00:03 Re: unsorted menus hack [Re: Captain_Chaos]
bonzi
pooh-bah

Registered: 13/09/1999
Posts: 2401
Loc: Croatia
That's why I almost always zip whatever is in danger of being downloaded through a browser...

Dragi "Bonzi" Raos
Zagreb, Croatia
Q#5196, MkII#80000376, 18GB green
_________________________
Dragi "Bonzi" Raos Q#5196 MkII #080000376, 18GB green MkIIa #040103247, 60GB blue

Top
#33684 - 05/07/2001 07:51 Re: unsorted menus hack [Re: borislav]
Taym
carpal tunnel

Registered: 18/06/2001
Posts: 2504
Loc: Roma, Italy
Just wanted to say Thank You. Simply great. Quick and easy :))

Taym
______________________________
EMPEG MK II BLUE 12GB
090000923
_________________________
= Taym =
MK2a #040103216 * 100Gb *All/Colors* Radio * 3.0a11 * Hijack = taympeg

Top
#33685 - 07/07/2001 17:44 Re: unsorted menus hack [Re: borislav]
rockstar
enthusiast

Registered: 24/11/2000
Posts: 316
I was under the impression that the Empeg now displayed all playlists in alphabetical order? I am sure mine is,.. maybe i don't pay enough attention.???

do i misunderstand what this hack accomplishes?


Top
#33686 - 07/07/2001 17:50 Re: unsorted menus hack [Re: rockstar]
Chuck
member

Registered: 06/06/2001
Posts: 183
This hack enables the playlists to be in 'position' order instead of alphabetical order. Great hack, I love it!

-Chuck


Top