
| What? | Status? |
|---|---|
| Device detection | |
| Rockbox installation | |
| Bootloader installation | |
| Font installation | |
| Doom files installation | |
| Theme installation | |
| Talk file generation | |
| Voice file installation | |
| Uninstallation | |
| Manual view | |
| Complete Installation | |
| Small Installation | |
| Portable installation | |
| Proxy setup | |
| Download cache | |
| I18N |
| What? | Status? |
|---|---|
| uninstallation / install info | |
| 1st installation detection | |
| Device detection | |
| Proxy | |
| L10N support | |
| Mountpoint resolving on mac | |
| backup of installation prior to installing | |
| improving screenreader support | |
| builtin rbspeex and sapi.vbs | |
| Talk file generation | support |
| voice file creation | |
| Unsupported iPod | |
| General | Code clean up - being worked on. |
| Better Progress Window | console version needs implementation, Logging to a file |
| Console commandos for rbutil | needs implementation - in Work (FS#8571) |
| clean orphan files | could be done by automatically performing an uninstallation before updating |
| install info cleanup | possibility to wipe all files that are marked as outdated in the info window / all files that don't match a specific (read: the current) version) |
| 1st time installation | Operate in wizard mode instead of the "invalid configuration" splash. First thing should be UI language selection, without needing to restart. |
| Device detection | Auto detection should probably display directly what was found; at least the highlighting should be more prominent (currently very faint on laptop LCD) |
| Accessibility | Accessibility in rbutil needs improvement. Most of those isses are Qt issues. - (FS#10205) |
Some of the following could be implemented with plugins. -- Qt supports plugins, but it hasn't figured out how to make use of that. Its also unclear which functionality should go into plugins.
| What? | How? | Status? |
|---|---|---|
| Scrobbler submission | basically a frontend for libscrobbler | |
| tagnavi_custom.config generator | ||
| default configuration | provide some reasonable defaults for config.cfg | |
| video conversion | do it like WinFF | |
| local repository | do we really want such a function? Offline mode does something similar | |
| Configfile editor | A Editor for Rockbox config files | |
| Optional components | Rbutil could install the midi patchset, if the license allows it (otherwise the patchset needs to be removed from the wiki as well) | |
| Install/ uninstall | Support for multiple devices would be nice (perhaps use some sort of (quasi-)unique device ID?) | |
| Translation | There's an online tool available at http://themes.rockbox.org so having support for this in Rockbox Utility would only duplicate work | |
| UI Rework | see below | |
| Talkfile generation for database |
As rbutil gets more and more functions, the UI needs a rework. Lets collect ideas for a Rework here:
Combine the first three Tabs (Quickstart, Installation, Extras) into one. Make a more global selection of release or current Build. Screenshots of mockups by bluebrother:
mainscreen during installation
Show more info about the currently selected Device. Ie currently installed version and maybe a player picture.
If you want to work on RockboxUtility get the module "rockbox" from svn (you need parts of the Rockbox source tree, so it's easiest to grab the whole tree. If you don't want to do this: you'll need rbutil, and parts of tools and apps. You might want to use the script deploy-release.py in this case). Source code is in the rbutil/rbutilqt folder (plus other parts of the Rockbox source tree) in the Rockbox SVN (browse). You can download it with the command: svn co svn://svn.rockbox.org/rockbox/trunk rockbox
You have to have Qt Version 4.5.0 or higher installed. Since r22624 out-of-tree building is possible. You can still build in-tree.
qmake followed by make in the build folder. qmake, then make. Depending on your installation the qmake binary of Qt4 might be called qmake-qt4. On linux and mac you'll also need libusb (including the development headers).
Notes:
qmake -config dbg-config silent to the qmake call (you can add multiple -config switches, in case you also want to enable debugging output), or add the line CONFIG += silent to the project file. -config silent from working. You can simply fix this by adjusting the path delimiter in mkspecs/features/resources.prf below the Qt installation directory -- the delimiter in the line naming rcc.exe needs to be a slash, not a backslash. mingw32-make instead of make. QMAKE_RCC in the project file to the correct binary using slashes. qmake will produce a warning. You can either safely ignore this warning (the translations are generated during the build process) or run lrelease-qt4 rbutilqt.pro before calling qmake-qt4. bin folder of the MinGW installation in your PATH variable. bin folder to your PATH. Make sure the MinGW path comes first or use mingw32-make instead of make (msys' make won't accepts backslashes in paths, but this is unfortunately needed by Qt). -no-exceptions when building Qt. Otherwise you'll get a dependency on mingwm10.dll. Also, having support for exceptions enabled increases the binary size noticably.configure -no-exceptions -static -release -no-webkit -no-dbus -no-phonon -no-phonon-backend -no-qt3support -no-opengl -no-direct3d -no-style-motif -no-style-cdeqmake, then make. Important note: on OS X 10.6 the default compiler is gcc-4.2 which doesn't support the 10.4 SDK anymore. To make it use the older gcc-4.0 (part of Xcode 3.2) set QMAKESPEC explicitly, i.e. invoke qmake as QMAKESPEC=macx-g++40 qmake. Official support for OS X 10.6 also requires at least Qt 4.6. For building Qt itself, do the following
./configure -universal -sdk /Developer/SDKs/MacOSX10.4u.sdkmake followed by (as root) make install You can then build rbutilqt by typing (in the rbutilqt source directory) /usr/local/Trolltech/Qt-4.3.0/bin/qmake followed by make
If you want to statically link rbutil with Qt (i.e. to build versions for distribution), add -static to the configure options.
An alternative to static linking is to use the instructions on http://doc.trolltech.com/4.3/deployment-mac.htm to include the frameworks in the application bundle. This method has the benefit of allowing plugins to be included too and also means that a static build of Qt is not required.
For deployment on mac, there is a "osx_deploy.sh script. It expects Qt as framework. So dont built Qt statically. You have to make sure that you have a universal libusb.a. Also make sure that rbutil links to the static version of libusb. (easiest way is to rename the libusb.dynlib in your search path) You can get a universal binary of libusb at: http://www.ellert.se/twain-sane/
Notes: I had an error regarding when compiling Qt related to missing pq_* functions. I fixed this by disabling PostgreSQL support - adding "-no-sql-psql" to the ./configure line.
More advice for compiling on the Mac is available here - http://doc.trolltech.com/qtjambi/com/trolltech/qt/platform-notes-mac.html
For building the static binary the following configuration was used:./configure -prefix /usr/local/qt4.4.3-static/ -release -static -no-exceptions -no-qt3support -no-phonon -no-phonon-backend -no-xinerama -no-openssl -no-xcursor -no-cups
You can have two differently configured versions of Qt alongside without any problems, just remember to call the correct qmake. There is no need to make the Qt bin-folder part of the PATH variable. If you want to omit demos and examples during Qt compilation, omit the -fast option in the configure line and run make sub-src sub-tools instead of make.
Qt supports I18N and Rockbox Utility uses this. To translate Rockbox Utility do the following:
rbutilqt/rbutilqt.pro. lupdate rbutilqt.pro*.ts file using "linguist" lrelease to convert the *.ts file to the *.qm format that is used for I18N. *.qm file in the same folder as the executable. Rockbox Utility will then detect the new translation and allow you to use it. *.qm file in rbutil-lang.qrc and the language file will be built into the binary. *.ts file to the tracker so we can include it 
Note: this table is generated using the script langstats.py and updated in the wiki manually. Do not edit the table manually, such changes will get lost on the next update with the script.
| Translation status as of revision 27844 29000 | |||||||
|---|---|---|---|---|---|---|---|
| Language | Language Code | Translations | Finished | Unfinished | Untranslated | Updated | Done |
| Czech | cs | 574 572 | 525 523 | 49 | 67 71 | 26932 (2010-06-18) 28117 (2010-09-19) | 89% 88% ########+ |
| German | de | 641 639 | 544 542 | 97 | 0 4 | 26932 (2010-06-18) 28117 (2010-09-19) | 100% 99% ########## #########+ |
| Finnish | fi | 339 338 | 296 295 | 43 | 302 305 | 26932 (2010-06-18) 28117 (2010-09-19) | 52% ##### |
| French | fr | 601 640 | 590 640 | 11 0 | 40 3 | 26932 (2010-06-18) 28692 (2010-11-28) | 93% 99% ######### #########+ |
| Greek | gr | 476 475 | 424 423 | 52 | 165 168 | 26932 (2010-06-18) 28117 (2010-09-19) | 74% 73% ####### |
| Hebrew | he | 619 617 | 608 606 | 11 | 22 26 | 26932 (2010-06-18) 28117 (2010-09-19) | 96% 95% #########+ |
| Italian | it | 514 512 | 469 467 | 45 | 127 131 | 26932 (2010-06-18) 28117 (2010-09-19) | 80% 79% ######## #######+ |
| Japanese | ja | 622 620 | 611 609 | 11 | 19 23 | 26932 (2010-06-18) 28117 (2010-09-19) | 97% 96% #########+ |
| Dutch | nl | 565 563 | 518 516 | 47 | 76 80 | 26932 (2010-06-18) 28117 (2010-09-19) | 88% 87% ########+ |
| Polish | pl | 586 584 | 523 521 | 63 | 55 59 | 26932 (2010-06-18) 28117 (2010-09-19) | 91% 90% ######### |
| Portuguese | pt | 475 474 | 424 423 | 51 | 166 169 | 26932 (2010-06-18) 28117 (2010-09-19) | 74% 73% ####### |
| Portuguese (Brasileiro) | pt_BR | 642 640 | 642 640 | 0 | 0 4 | 27778 (2010-08-12) 28117 (2010-09-19) | 100% 99% ########## #########+ |
| Russian | ru | 587 639 | 548 639 | 39 0 | 54 4 | 26932 (2010-06-18) 28997 (2011-01-07) | 91% 99% ######### #########+ |
| Turkish | tr | 262 | 222 | 40 | 379 381 | 26932 (2010-06-18) 28117 (2010-09-19) | 40% #### |
| Chinese | zh_CN | 234 | 199 | 35 | 407 409 | 26932 (2010-06-18) 28117 (2010-09-19) | 36% ###+ |
| Chinese (trad) | zh_TW | 234 | 199 | 35 | 407 409 | 26932 (2010-06-18) 28117 (2010-09-19) | 36% ###+ |
To add a new target you have to edit the following files:
If your Target has a new Bootloader installation method:
If there are ways for your target to detect the mountpoint or, in case of duplicate USB-IDs, detect the correct Target:
The TTS Engines are in base/tts.cpp / .h. Add your new Engine to the list in initTTSList() and the switch in getTTS().
If your new engine is a simple external executable, you can add a template line to constructor of TTSExes and you are done.
If you have to interface your TTS Engine via another way, or want to give more options to the user, you have to create a new TTS Class which inherits from TTSBase. You will have to implement at least the following functions:
To display settings, the TTS Classes implements the EncTtsSettingInterface which you can find in base/encttssettings.h/cpp. In the generateSetting() function you should create EncTtsSetting objects for all your settings. Each Setting contains the following Information:
You can connect to the following signals:
Add your newly generated objects with insertSetting() to the internal list. insertSetting() also takes a ID, which you can use to retrieve the object again in the saveSettings object.
Currently there are no distribution packages planned. Packages might be requested from distributions. Requests we are aware of:
Please note that we do not support any versions of Rockbox Utility packaged by distributions!
All supported devices can be detected automatically. Rockbox Utility will display a warning when autodetection wasn't successful; you can always select your device manually. If you installed Rockbox once it can get detected via the file /.rockbox/rockbox-info.txt. This will work on all devices. See DeviceDetection for further details.
This relies on detecting the player first (see paragraph above). The following table list when / how we can resolve the mountpoint afterwards. This table only holds supported players; all supported player can now (as of 2008-04-03) be detected reliably.
denotes a possible way of resolving that hasn't been implemented yet. Once Rockbox is installed mountpoint resolving using rockbox-info.txt will always work.
| Brand | Player | Windows | Linux | OS X |
|---|---|---|---|---|
| Apple | all Ipods | |||
| Archos | all | |||
| Cowon | X5, M5 | |||
| Iriver | H100, H300 | |||
| Iriver | H10 | |||
| Packard Bell | Vibe 500 | |||
| Sandisk | e200, c200 | |||
| Olympus | m:robe 100 | |||
| Toshiba | Gigabeat |
The script deploy-release.py is intended to automate releasing by building the current checkout state and packaging it to a tar.bz2 / zip file. Use the command line option -q / --qmake to pass the path to the qmake binary of the Qt installation you want to use (if there are multiple), otherwise the system is searched for a Qt4 installation and the first found gets used.
Brief release checklist
version.h and Info.plist and commit them. svn copy svn://svn.rockbox.org/rockbox/trunk svn://svn.rockbox.org/rockbox/tags/rbutil_1.0.5deploy-release.py to do the following steps. Don't forget to -a libusb.a on the platforms that require it. qmake -config release -config static
The script deploy-release.py is intended for simplifying the release process but can also get used for building. This is especially useful if you just want to build RockboxUtility and don't want to get the full Rockbox svn.
deploy-release.py -h to get an overview of the supported command line options. All created archives will get placed in the current directory while building itself takes place in the systems temporary path. This is the Qt version of Rockbox Utility. It supersedes the older wxwidgets based version which isn't maintained anymore and has therefore been removed from svn.