Development of Rockbox Utility
Tasks
Open Tasks in the tracker
Milestone 1: be on par with the old wx version
| What? | Status? |
| Device detection | sansapatcher detection untested |
| Rockbox installation | done |
| Bootloader installation | done, needs testing |
| Font installation | done |
| Doom files installation | done |
| Theme installation | done |
| Talk file generation | done (only basic functionality) |
| Voice file installation | done |
| Uninstallation | done |
| Manual view | done: downloading to the device (no destination selection) |
| Complete Installation | done, code could be improved |
| Small Installation | done, code could be improved |
| Portable installation | done (only working if built as static binary) |
| Proxy setup | system proxy only working on linux (http_proxy environment variable) |
| Download cache | needs testing |
| I18N | support added, translations missing |
Milestone 2: further enhancements
| What? | Status? |
| uninstallation / install info | done |
| 1st installation detection | if no / no valid user configuration is found, display a warning and open the configuration dialog |
| Device detection | use USB PIDs for detection linux (using libusb), windows (setupapi based) |
| Proxy | support "system proxy" setting on windows (registry values used) |
| L10N support | we have I18N already, extend it to do real L10N |
| Mountpoint resolving on mac | done |
| Talk file generation | support festival and the sapi scripts from svn; autodetect binaries; find a way to not make the progress window flicker; add option to generate talk files for directories only; incorporate sapi vbs scripts ; add option to only voice certain file types |
| improving screenreader support | maybe add a drop downmenü with all install/uninstall options from the main tabs. / findout why jaws and other screenreaders have problems reading titles of QTabwidget. -> Its a bug in Qt, i reported it to Trolltech, and it will be fixed in future Qt versions (fixed in Qt 4.4.0-beta1). |
| General | Code clean up |
| Better Progress Window | console version needs implementation - in Work |
| Console commandos for rbutil | needs implementation - in Work |
| backup of installation prior to installing | rbutil now asks if you want to backup before installing a new Build |
| 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) |
| builtin rbspeex and sapi.vbs | The rbspeex encoder should be built in, and the Sapi.vbs schould be in the resourcefile for windows |
| voice file creation | needs the servers to provide the features file for every player |
Milestone 3: additions / ideas
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 | |
How To Compile
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, tools and apps). 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.3.0 or higher installed.
Then you run the command qmake and then make in the rbutilqt folder. 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:
- the build defaults to a release build which has debugging output (even the console) disabled. To create a debug build run qmake with the config option "dbg", i.e. the following way:
qmake -config dbg
- you can make the build output much more silent by adding the configuration "silent". The easiers way is to add
-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.
- Note that there is a bug in Qt/Windows which prevents this 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.
- you can also define QMAKE_RCC to the correct binary using slashes.
- if you don't have Qt in your PATH (i.e. calling qmake.exe using a full path) make sure to use /'s in the path. Otherwise make will fail.
- Qt 4.3.3s qmake has a bug (at least on windows) which generates wrong makefiles. Comment out the UI_DIR entrys in the .pro file, as a hotfix.
- There is now a Makefile target "install" on non-windows platforms. It seems as it gets confused with the file install.cpp, but you can use the internal target "install_target" instead. This will only install the binary (to /usr/local/bin), language files are not handled yet. Unless you want to use translations you don't need to install anything else from the build.
Compiling on Windows
- You need the following packages installed (additionally to Qt itself)
- MinGW. You need a recent version (current is 5.1.4), the package offered for installation by Qt is not sufficient. You should append the
bin folder of the MinGW installation in your PATH variable.
- msys. librbspeex.a requires
sed which is not part of MinGW. As for MinGW itself, append the bin folder to your PATH.
- Building using Visual Studio isn't supported -- rbutil uses some C99 features VS doesn't implement.
Compiling on Mac OS X
- Download the Qt source and uncompress it. I used qt-mac-opensource-src-4.3.0
- Run
./configure -universal -sdk /Developer/SDKs/MacOSX10.4u.sdk
- Run
make 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.
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
Statically Compiling on Linux
For building the static binary the following configuration was used:
./configure -prefix /usr/local/qt4.3.1-static/ -release -static -fast -no-xinerama -no-xrandr -no-tablet -no-openssl -no-xcursor
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 instead of make.
How to Translate
Qt supports I18N and Rockbox Utility uses this. To translate Rockbox Utility do the following:
- add a new file to the TRANSLATIONS line in rbutilqt/rbutilqt.pro.
- run "lupdate"
- edit the resulting *.ts file using "linguist"
- run "lrelease" to convert the *.ts file to the *.qm format that is used for I18N.
- put the resulting *.qm file in the same folder as the executable. Rockbox Utility will then detect the new translation and allow you to use it.
- and don't forget to post the *.ts file to the tracker so we can include it ;-)
Translation status (updated 2008-06-30)
| Language | Num translated | Num unfinished translations | missing translations |
| german | 492 | 1 | 6 |
| french | 497 | 0 | 1 |
| dutch | 498 | 0 | 0 |
| turkish | 354 | 28 | 144 |
| chinese | 319 | 28 | 179 |
| chinese trad | 318 | 27 | 180 |
Autodetection
Currently not all 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.
Resolving mountpoints
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 | resolving from drive UNC path figured by ipodpatcher (fallback: check for iPod_Control folder) | device node known by ipodpatcher, resolving using mtab | same as linux |
| Archos | all | detect some specific files (firmware image on disc, magic in firmware file) | same | same |
| Cowon | X5, M5 | unknown (no specific file to check for) | same | same |
| Iriver | H100, H300 | only detection based on USB possible, currently there is no way known to resolve USB PID -> mountpoint | same | same |
| Iriver | H10 | possible recognizing the bootloader file location | same | same |
| Sandisk | e200, c200 | resolving from drive UNC path figured by sansapatcher | device node known by sansapatcher, resolving using mtab | same as linux |
| Olympus | m:robe 100 | possible looking for bootloader file | same | same |
| Toshiba | Gigabeat | possible searching for bootloader file | same | same |
Releasing
When making a release, don't forget to
- update the version info in
version.h and Info.plist
- build against static libraries ;-)
- strip the binaries (seems to be mostly an issue on linux)
- upx the windows binary to cut down its size
- lrelease the language files
- to tag svn. As rbutil now needs parts of the main Rockbox sources we need to tag trunk, not only the rbutil folder. Use a version number as in the following example:
svn copy svn://svn.rockbox.org/rockbox/trunk svn://svn.rockbox.org/rockbox/tags/rbutil_m1.0.5
History
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.
|