www.rockbox.org Software Freedom Day, Stockholm 18 september, 2010 Daniel Stenberg <daniel@haxx.se>
Daniel Stenberg <ul><li>Co-founder of the Rockbox project
Embedded developer
Open source hacker
16000 commits
foss-sthlm
FSCONS </li></ul>
Vad jag tänkte snacka om <ul><li>Orginalfirmwares är skräp
Hur byter man ut dem?
Hur funkar hårdvaran?
Hur bygger man mjukvara till den?
Lite om Rockbox – varför, vad, hur etc </li></ul>
Prylar Saker funkar inte som man vill
Folk gillar att bygga om grejor
Portabla musikspelare dök upp 2001 Inte så spektakulära
Original Firmwares suger <ul><li>Alla är dåliga
Jo alla
Sega
Dålig batteritid
Dåligt codecutbud
Inga spel
Och mycket mycker mer </li></ul>
Hur svårt kan det vara? Björn Stenberg Linus Nielsen Feltzing Daniel Stenberg Stockholm Sverige, Dec 2001
Hur får vi in vår kod här? <ul><li>Här har vi en spelare
Den kör larvig kod
Jag vill köra min kod istället
Vilken kod förresten? </li></ul>
Hur hackar man en mp3-spelare? Eller åtminstone en genomgång om hur vi lyckats göra det hittills...
Community involvera massa folk! Tidsödande Enformigt Massor av jobb Svårt
Fysiska komponenter <ul><li>Riv isär
Hi-Res scanna PCB och publicera
beepa koppel
Identifiera komponenter </li><ul><li>- var lättare förr
- custom branded
SoC är fokus </li></ul></ul>
Vad finns det innuti? <ul><li>SoC (sh, ARM, m68k, MIPS, ...)
USB
Sound Codec
RAM (typiskt kanske 32MB)
Flash (NOR för program/boot)
Upcoming SlideShare
Loading in …5
×

Rockbox - Software Freedom Day 2010

2,057 views
1,897 views

Published on

Daniel Stenbergs presentation om reverse engineering konsumentelektronik och Rockbox. Framfört den 18:e september 2010 på Svenska Linuxföreningens Linuxträfff 2010

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,057
On SlideShare
0
From Embeds
0
Number of Embeds
321
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
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&apos;t work like we wish they would For many years my mobile phone had lots of quirks I didn&apos;t like but couldn&apos;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&apos;s make it better. Call out to get interested people to join.
  • 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!
  • 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.
  • Makes your mp3 player run Free Software
  • Rockbox - Software Freedom Day 2010

    1. 1. www.rockbox.org Software Freedom Day, Stockholm 18 september, 2010 Daniel Stenberg <daniel@haxx.se>
    2. 2. Daniel Stenberg <ul><li>Co-founder of the Rockbox project
    3. 3. Embedded developer
    4. 4. Open source hacker
    5. 5. 16000 commits
    6. 6. foss-sthlm
    7. 7. FSCONS </li></ul>
    8. 8. Vad jag tänkte snacka om <ul><li>Orginalfirmwares är skräp
    9. 9. Hur byter man ut dem?
    10. 10. Hur funkar hårdvaran?
    11. 11. Hur bygger man mjukvara till den?
    12. 12. Lite om Rockbox – varför, vad, hur etc </li></ul>
    13. 13. Prylar Saker funkar inte som man vill
    14. 14. Folk gillar att bygga om grejor
    15. 15. Portabla musikspelare dök upp 2001 Inte så spektakulära
    16. 16. Original Firmwares suger <ul><li>Alla är dåliga
    17. 17. Jo alla
    18. 18. Sega
    19. 19. Dålig batteritid
    20. 20. Dåligt codecutbud
    21. 21. Inga spel
    22. 22. Och mycket mycker mer </li></ul>
    23. 23. Hur svårt kan det vara? Björn Stenberg Linus Nielsen Feltzing Daniel Stenberg Stockholm Sverige, Dec 2001
    24. 24. Hur får vi in vår kod här? <ul><li>Här har vi en spelare
    25. 25. Den kör larvig kod
    26. 26. Jag vill köra min kod istället
    27. 27. Vilken kod förresten? </li></ul>
    28. 28. Hur hackar man en mp3-spelare? Eller åtminstone en genomgång om hur vi lyckats göra det hittills...
    29. 29. Community involvera massa folk! Tidsödande Enformigt Massor av jobb Svårt
    30. 30. Fysiska komponenter <ul><li>Riv isär
    31. 31. Hi-Res scanna PCB och publicera
    32. 32. beepa koppel
    33. 33. Identifiera komponenter </li><ul><li>- var lättare förr
    34. 34. - custom branded
    35. 35. SoC är fokus </li></ul></ul>
    36. 36. Vad finns det innuti? <ul><li>SoC (sh, ARM, m68k, MIPS, ...)
    37. 37. USB
    38. 38. Sound Codec
    39. 39. RAM (typiskt kanske 32MB)
    40. 40. Flash (NOR för program/boot)
    41. 41. Flash (NAND för allt i princip numera) </li></ul><ul><li>HDD (för lagring)
    42. 42. FM tuner
    43. 43. LCD (gråskala, 16bit färg, touch, …)
    44. 44. Fjärrkontroll
    45. 45. Knappar, pads, hjul... </li></ul><ul><li>Varje spelare är unik och tarvar anpassningar </li></ul>
    46. 46. Hur funkar komponenterna? <ul><li>Hitta datablad
    47. 47. Inte alltid tillgängliga
    48. 48. NDAs som bara den
    49. 49. delar av chips är sublicensierade - under andra licenser/NDAer
    50. 50. Tillverkare gillar hemligheter
    51. 51. Blir svårare och svårare </li></ul>
    52. 52. HW-verktyg <ul><li>JTAG
    53. 53. BDM
    54. 54. UART
    55. 55. USB </li></ul>
    56. 56. Uppgraderingsformat <ul><li>Hur går en uppgradering till?
    57. 57. Hur gör jag min egen upgradering?
    58. 58. Checksummor?
    59. 59. Scrambled / kryptering?
    60. 60. Digitala signaturer?
    61. 61. Analysera! Kolla olika varianter </li></ul>
    62. 62. Digitalt signerade firmwares <ul><li>Hård riktigt kryptering kan inte brute-forcas
    63. 63. Leta alternativ
    64. 64. Luckor i algoritmen eller dess implementation
    65. 65. Buffer overflows </li></ul>
    66. 66. Disassemblera <ul><li>Lista ut huvudarkitektur (sh, m68k, arm, MIPS, …)
    67. 67. luriga icke-”standard&quot; CPU/DSP cores (calmrisc16)
    68. 68. Objdump är din vän
    69. 69. IDA Pro är dyrt </li></ul>
    70. 70. Binärt är assembler? <ul><li>arm-elf-objdump -D --target binary -marm [file] </li></ul>
    71. 71. Säker exekvering av egen kod <ul><li>“ Unbrickable” spelare
    72. 72. Ladda till RAM
    73. 73. Ladda med HW-verktyg
    74. 74. Injicera i original / binary-patch
    75. 75. Buffer overflow-trigga </li></ul>
    76. 76. Skriv en bootloader <ul><li>Baserat på all info du hittat, skriv... </li></ul><ul><li>LCD code
    77. 77. Button code
    78. 78. Disk/flash access code </li></ul>
    79. 79. Tidig Rockbox <ul><li>Med en bootloader “klar”
    80. 80. Gör den “upgraderingsbar” på spelaren
    81. 81. Prova den
    82. 82. Sedan är det nedförsbacke
    83. 83. Få till själva Rockbox att stödja: </li><ul><ul><ul><li>Ljud
    84. 84. USB
    85. 85. Inspelning
    86. 86. FM tuner
    87. 87. … </li></ul></ul></ul></ul>
    88. 88. Involvera alla andra! <ul><li>IRC
    89. 89. Mailinglistor
    90. 90. Forum
    91. 91. Snacka. Chatta. Testa. Rapportera. Hjälp. Sprid kunskap. Beskriv framgångar
    92. 92. Förvänta dig inte snabba resultat! </li></ul>
    93. 93. Bygga en egen spelare? <ul><li>Svårt och dyrt – komponenter, design, tillverkning etc
    94. 94. SW kan göras nästan utan kostnad, HW inte lika mycket
    95. 95. Lyre bygger spelare för att köra Rockbox </li></ul>
    96. 96. Tillverkare och Rockbox <ul><li>Programvara säljer inte spelarna
    97. 97. Det är dyrare att sätta in sig i andras kod
    98. 98. GPL är läskigt
    99. 99. Oklart </li></ul>
    100. 100. Rockbox – ett OS <ul><li>Rockbox är inte Linux
    101. 101. Litet
    102. 102. Skrivet från scratch
    103. 103. Cooperative multitasking med prioriteter
    104. 104. Message queues
    105. 105. UI
    106. 106. Loadable plugins
    107. 107. Loadable codecs
    108. 108. Themeable </li></ul>
    109. 109. Rockboxutveckling <ul><li>Gcc, make, shell, perl
    110. 110. Bygger våra egna cross-compilers
    111. 111. SVN
    112. 112. Bygg din egen binär på 30 minuter
    113. 113. Mest C, små delar i assembler </li></ul>
    114. 114. Behålla funktionalitet <ul><li>Simulatorer – testar högnivkod utan hårdvara
    115. 115. Distribuerat byggsystem (160 byggen på 100 sekunder)
    116. 116. Nedladdningsbara binärer efter varje commit
    117. 117. Bug tracker </li></ul>
    118. 119. Playback <ul><li>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)
    119. 120. Gapless playback
    120. 121. 5-band fully-parametric equalizer, och crossfeed
    121. 122. Advancerad crossfading
    122. 123. Cuesheet support
    123. 124. Album Art Support </li></ul>
    124. 125. Tillgänglighet <ul><li>tagdatabas eller filsystem
    125. 126. Unicodesupport och fonter
    126. 127. Språk!
    127. 128. Talat interface
    128. 129. Target-specifika detaljerade 200+ sidiga manualer! </li></ul>
    129. 130. Icke-playback (aka rubbish) <ul><li>Themes
    130. 131. 100 plugins/apps
    131. 132. Games, including Doom
    132. 133. Emulators
    133. 134. MPEG videos
    134. 135. View pictures
    135. 136. … och mer! </li></ul>
    136. 137. Folk gillar skins
    137. 138. 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>
    138. 139. Team Rockbox <ul><li>90+ committers, 500 named contributors
    139. 140. 900K lines of code
    140. 141. IRC
    141. 142. Distribuerade beslut
    142. 143. Rockbox Steering Board
    143. 144. Devcons!
    144. 145. 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>
    145. 146. Policies <ul><li>GPL “v2 or later”
    146. 147. Lagligt
    147. 148. Real name policy
    148. 149. Inga anonyma bidrag
    149. 150. Vi avråder från piratkopiering </li></ul>
    150. 151. Lätt att installera <ul><li>Rockbox Utility
    151. 152. Linux, Windows och Mac </li></ul>
    152. 153. 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
    153. 154. … torn!
    154. 155. Som fan!

    ×