Rockbox at FSCONS 2009


Published on

Daniel Stenberg's Rockbox presentation at FSCONS 2099.

1 Comment
  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • About Rockbox and how to get Free Software on mp3 players.
  • Work at haxx 20 something projects 15K something public commits Open source contributor since 1995
  • We all have gadgets that don't work like we wish they would For many years my mobile phone had lots of quirks I didn't like but couldn't make it stop doring.
  • And we already appreciate and enjoy customizing our softwares and operating systems thanks to free and open software.
  • The first portable music players appeared 2001 Archos was not the first, but one of the absolutely first harddrive based ones as the flash-based ones only had very very tiny storage back then 6GB disk, 12MHz SH7034. Dedicated mp3 decoding chip. 2MB ram.
  • Let's make it better. Call out to get interested people to join.
  • Figuring out what we could do with our own software certainly was not the problem.
  • We already have code running on a few more models since I made this slide a few weeks ago and I find it telling. A device is often called target and vice versa
  • This is an old tradition and ritual of ours – some would even call it a sport. To build the biggest possible tower out of devices that can run Rockbox.
  • Probably applies to a lot of other sorts of devices but this talk is limited to portable music players only since that is what Rockbox runs on.
  • Web site, wikis, mailing lists, forums. The more the merrier
  • Various amounts of these parts can be embedded into the same circuit/SoC
  • UART and USB are mentioned as they can be used to output data through and to use gdb on target with etc. Some Ofs even used (removed) UART to output debug messages.
  • Finding a non-standard one without for example gcc port could in itself be a blocker for further work!
  • Bricking devices is uncool JTAG and BDM might be able to download code to RAM
  • We like dual-booting abilities The first-stage booting is even more very different between targets
  • The steep uphill battle is done. Now the slightly more casual work begins.
  • HW development is different - you need real money to make physical things MPEG, USB, SD etc licenses and “IP rights”
  • We run on hard-drive devices with 2MB ram only, and then lots of that is used to buffer compressed music! Some recent flash-based players have even less ram.
  • Traditional-style *nix-based cross-compiled development
  • The simulator pops up a window looking like the target and it simulates the low layer APIs.
  • Excellent audio playback is our primary focus
  • We have a fairly large blind and visually impaired user-base thanks to our spoken interface, that works with pre-recorded sound-snippets played back when you hover over menu items. Manuals built daily and provided on site non-stop.
  • Our focus on audio playback has made one or two people call the non-audio stuff “rubbish” or similar over the years. We emulate various old game systems. Doom is a native port, not an emulator. MPEG1 and 2 videos with fairly good frame rates on most devices.
  • We have a dedicated theme site for people to upload their own creations for their particular device.
  • Existing other Open source and Free Software projects make Rockbox possible. We could not have done this by ourselves.
  • Developer conferences take place in the US and in Europe roughly once a year.
  • Real name to emphasis our legal standpoint, to get a proper track of who did what and to avoid the nickname craziness many “hacking” projects use.
  • Fancy UI point-and-click makes installing a breeze!
  • Makes your mp3 player run Free Software
  • Rockbox at FSCONS 2009

    1. 1. Göteborg, FSCONS November 14, 2009 Daniel Stenberg <>
    2. 2. Daniel Stenberg <ul><li>Co-founder of the Rockbox project
    3. 3. Embedded systems developer
    4. 4. Open source hacker </li></ul>
    5. 5. Gadgets Gadgets don't do what we want them to
    6. 6. People like to customize things
    7. 7. Enter portable music players 2001 Not so fancy
    8. 8. How hard can it be? Björn Stenberg Linus Nielsen Feltzing Daniel Stenberg Stockholm Sweden, Dec 2001
    9. 9. more Freedom Games Music formats Speed Customization Applications
    10. 10. And not the least What must not be forgotten...
    11. 11. Sandisk Sansa c100, Onda VX747, SanDisk Sansa Fuze, Sandisk Sansa Clip v1, iAudio M5, Archos FM Recorder, Cowon iAudio 7, iAudio X5, Apple iPod Mini 2nd gen, Apple iPod color/photo, Archos Recorder V2, Onda VX767, Logik Dax, Philips GoGear HDD6300, Samsung YH-925, Olympus M-Robe 500, Apple iPod 3rd gen, SanDisk Sansa c200, Tatung Elio, Archos Ondio FM, iriver H100/H115, Archos Recorder, Apple iPod Nano 2nd gen, iriver H120/H140, Archos Ondio SP, iriver H10 5GB, Philips GoGear SA9200, Philips GoGear HDD1800, Sandisk Sansa m200, Toshiba Gigabeat F/X, SanDisk Sansa e200 v2, Archos Jukebox 5000, Samsung YH-820, Apple iPod Nano 1st gen, iriver H320/H340, Creative ZVM, Apple iPod 4th gen gray, Cowon D2, Meizu M6, Archos Jukebox 6000, Toshiba Gigabeat S, Apple iPod Video 60 GB, Olympus M-Robe 100, Apple iPod 1st and 2nd gen, Samsung YH-920, Apple iPod Video 30 GB, Apple iPod Mini 1st gen, iAudio M3, Sandisk Sansa c200v2, iriver H10 20GB, Philips GoGear HDD1600, SanDisk Sansa e200 52 models and counting
    12. 12. … make great towers!
    13. 13. How to hack an mp3 player Or at least a general description how we've done it so far...
    14. 14. Community involve many people! Time consuming Tedious Lots of work
    15. 15. Physical components <ul><li>Rip apart
    16. 16. Hi-Res scan PCB and publish
    17. 17. beep connections
    18. 18. Identify components </li><ul><li>- used to be less hard
    19. 19. - custom branded chips
    20. 20. SoC is primary </li></ul></ul>
    21. 21. What is inside a typical device? <ul><li>SoC (sh, ARM, m68k, MIPS, ...)
    22. 22. USB
    23. 23. Sound Codec
    24. 24. RAM (usually 32MB)
    25. 25. Flash (NOR for the program)
    26. 26. Flash (NAND these days for everything)
    27. 27. HDD (for storage)
    28. 28. FM tuner
    29. 29. LCD (greyscale, 16bit color, touch, …)
    30. 30. Remote
    31. 31. Buttons, pads, wheels... </li></ul><ul><li>Each device is unique and needs adaptations </li></ul>
    32. 32. Learn how components work <ul><li>Find data sheets
    33. 33. Not always available
    34. 34. NDAs like crazy
    35. 35. Parts of chips are sublicensed and thus under different licenses/NDAs
    36. 36. Manufacturers like secrets
    37. 37. This is growing harder and harder
    38. 38. Why do graphics chips in the PC world go in the opposite direction? </li></ul>
    39. 39. HW tools <ul><li>JTAG
    40. 40. BDM
    41. 41. UART
    42. 42. USB </li></ul>
    43. 43. Upgrade format <ul><li>How is an upgrade done?
    44. 44. How to create a custom upgrade?
    45. 45. Checksums?
    46. 46. Scrambled / encrypted?
    47. 47. Digitally signed?
    48. 48. Analyze! Inspect many variations </li></ul>
    49. 49. Disassemble <ul><li>Figure out main arch (sh, m68k, arm, MIPS, …)
    50. 50. tricky non-”standard&quot; CPU/DSP cores (calmrisc16)
    51. 51. Objdump is your friend
    52. 52. IDA Pro is expensive </li></ul>
    53. 53. Safe test of own code <ul><li>“ Unbrickable” devices
    54. 54. Load to RAM
    55. 55. Load with HW tools
    56. 56. Inject into original / binary-patch
    57. 57. Buffer overflow triggered </li></ul>
    58. 58. Write Bootloader <ul><li>Based on gathered info, write... </li></ul><ul><li>LCD code
    59. 59. Button code
    60. 60. Disk/flash access code </li></ul>
    61. 61. Early Rockbox <ul><li>With a bootloader done
    62. 62. Make it “upgradable” on the device
    63. 63. Try it
    64. 64. Make main Rockbox run: </li><ul><ul><ul><li>Sound
    65. 65. USB
    66. 66. Recording
    67. 67. FM tuner
    68. 68. … </li></ul></ul></ul></ul>
    69. 69. All others involved <ul><li>IRC
    70. 70. Mailing lists
    71. 71. Forums
    72. 72. Talk. Chat. Test. Report. Help. Share knowledge. Describe progress. Distribute wisdom.
    73. 73. Do not expect fast results! </li></ul>
    74. 74. So why not your own player? <ul><li>Hard and expensive – components, design, manufacture etc
    75. 75. SW is basically done without costs, HW is not
    76. 76. Lyre builds player(s) to run Rockbox </li></ul>
    77. 77. Rockbox the OS <ul><li>Rockbox is not Linux
    78. 78. Small
    79. 79. Written from scratch
    80. 80. Cooperative multitasking with priorities
    81. 81. Message queues
    82. 82. UI with graphics methods
    83. 83. Loadable plugins
    84. 84. Loadable codecs
    85. 85. Themeable looks </li></ul>
    86. 86. Rockbox Development <ul><li>Gcc, make, shell, perl
    87. 87. We build our own cross-compiler
    88. 88. SVN
    89. 89. Build your own binary in 30 minutes from scratch
    90. 90. Mostly C, small parts in assembler </li></ul>
    91. 91. Maintain functionality <ul><li>Simulators – tests high level code without HW access
    92. 92. Distributed build system (150 builds in 4 minutes)
    93. 93. Downloadable binaries after every commit
    94. 94. Bug tracker </li></ul>
    95. 95. Playback <ul><li>15 Codecs (MP3, Ogg Vorbis, WAV, MPC, AC3, AAC, WMA, ADX, Speex, Cook, ATRAC3, AIFF, FLAC, ALAC, Wavpack, Shorten, Monkey's audio, SID, MOD, NSF, SPC, MIDI, GBS, SAP)
    96. 96. Gapless playback
    97. 97. 5-band fully-parametric equalizer, and crossfeed
    98. 98. High-resolution volume control
    99. 99. Advanced crossfading
    100. 100. Cuesheet support
    101. 101. Album Art Support </li></ul>
    102. 102. Accessability <ul><li>Browse songs with a “tag database” or file system
    103. 103. Unicode support with fonts
    104. 104. Multilingual interface
    105. 105. Optional spoken interface
    106. 106. Target-specific detailed 200+ pages manual! </li></ul>
    107. 107. Non-playback (aka rubbish) <ul><li>Themes
    108. 108. 100 plugins/apps
    109. 109. Games, including Doom
    110. 110. Emulators
    111. 111. MPEG videos
    112. 112. View pictures
    113. 113. … and more! </li></ul>
    114. 114. People like skinning
    115. 115. Standing on the shoulders... <ul><li>libmad, wavpack, ffmpeg, Ogg Vorbis, liba52, Speex, libfaad, Doom, gnuchess, gnuboy, Pacman Instructional Emulator, Spectemu, libmpeg2, Game_Music_Emu, OpenSPC DSP emulator, ALAC decoder, UCL, iPod Linux, Vision-8 Emulator, robotfindskitten, libmtp, asap, libpng </li></ul>
    116. 116. The Team <ul><li>80+ committers, 500 named contributors
    117. 117. 900K lines of code
    118. 118. IRC
    119. 119. Distributed decisions
    120. 120. Rockbox Steering Board
    121. 121. We meet at devcons! </li></ul><ul><li>This is one of the largest open-source teams in the world, and is in the top 2% of all project teams on Ohloh. </li></ul>
    122. 122. Policies <ul><li>GPL “v2 or later”
    123. 123. Legal
    124. 124. Real name policy
    125. 125. No anonymous contributions
    126. 126. We discourage piracy </li></ul>
    127. 127. Easy to install <ul><li>Rockbox Utility
    128. 128. Linux, Windows and Mac </li></ul>
    129. 129. It rocks!