Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Rockbox at FSCONS 2009

2,422 views

Published on

Daniel Stenberg's Rockbox presentation at FSCONS 2099.

  • Be the first to like this

Rockbox at FSCONS 2009

  1. 1. www.rockbox.org Göteborg, FSCONS November 14, 2009 Daniel Stenberg <daniel@haxx.se>
  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!

×