Don't construct the local file URL from string. On Windows the URL needs to
start with file:/// instead of file://. QUrl handles this.
Change-Id: I3dea29a8d368ebdc20eeff6b1f1cf5058d1b5d05
This commit adds the necessary code in the dualboot stub (bootloader) to
let rockbox control the boot process. In particular, rockbox can now choose
if the next boot will be normal (boot rockbox or OF on magic key), to OF
or to updater.
The intents (to be added in follow-up commits) are:
1) Let the user more easily reboot to the OF. On some targets it is not trivial,
especially in USB mode.
2) Automatically reboot to updater when the user drop firmware.sb at the root
of the drive (currently, the user needs to do that in OF USB mode)
3) Document this OF magic
Change-Id: I86df651dec048c318c6a22de74abb8c6b41aa9ad
They did not compile anymore after the register hearder rework. This change
only fixes the syntax, the generated binaries are exactly identical.
Change-Id: Iec2347aa3deb1ddfe2ca36f0db1e481c4e2d329c
During the bootloader install/uninstall process, a signal
is emitted when "Abort" button is pressed, the installers
can attach this signal and cancel the process.
Change-Id: I7f297b8031d7a2d93da0022081aaef03ef041baf
Useful for targets that needs multi-stage uninstall. On current
targets (with Uninstall capability) the progress is updated to
100% when bootloader uninstall is successfully finished.
Change-Id: I61be1c4f5cfc2d2f35fa5005962be9703888447d
This allows to implement multi-stage uninstallers. Should not affect
the behaviour on current targets.
Change-Id: Idf8aec5caf76cf9317798890d094a7cebdbcabec
Since the stub code is shared with NWZ-360, it enables the pullup for the
hold button, but the NWZ-370/380 doesn't have a hold button so don't compile
this code in, it could potentially have unexpected effets or increase consumption
Change-Id: I28c8aa40fc7f9373593ff105fb6df557a6f57ccd
Qt 5.6 on OS X requires targeting at least OS X 10.7, while for earlier
versions we can still target 10.6. Handle this case and inform the user about
the used target version.
Change-Id: I78e426037e2966241ab9a63105e04e7366b469ed
MPProcessors has been deprecated with 10.7. When targeting 10.7 (required when
building with Qt 5.6 on OS X) this causes a warning. Use Gestalt instead
(Gestalt has been deprecated with 10.8, but when targeting 10.7 this doesn't
cause a warning, and Gestalt is used for other values as well).
Change-Id: Iaf82147ad47115e228f5c08f8198a6a7e92102a3
Current clang on OS X suggests placing parens so add them
(-Wbitwise-op-parentheses enabled by default).
Change-Id: I31b49386aa184fe27f72f7f58909b97524d96f44
C++11 requires a space between literal and identifier. When compiling with Qt
5.6 on OS X C++11 support is automatically enabled, causing an error due to
this.
Change-Id: Ifbedc894a3cef23fc67ed1da75558e92e44d1077
QUrl::isLocalFile() is available starting with Qt 4.8. We can safely check for
a file:// url instead.
Qt 4.8 dropped support for OS X 10.4 / 10.5. Since we're still supporting those
we need to keep using Qt 4.7 on OS X. We might want to consider requiring at
least 10.6 on OS X with the next major release of Rockbox Utility.
Change-Id: I18998fe3c7a38773479bc7a1c32ca6e4966359e9
On case sensitive systems (i.e. Linux) uninstalling the bootloader could fail
when renaming the original bootloader file back. Fix this by using the
case-resolved filename.
Change-Id: I504656f70e7ccc7c0752f5252ddb14a625131f5b
Rework to return mapping between (filtered) process names and their pid values
(if running). Note that this functionality is not implemented for Linux (but as
it's mostly intended to detect Itunes currently not needed on that platform).
Change-Id: Ie348bfed46bda390f469c37635a96c75e5782616
Solves some eject issues (FSCTL_LOCK_VOLUMEN ioctl failures) ocurring
when resolveDevicename() is ejecuted prior to ejectDevice(), tested
with Qt5.
Change-Id: Iff9240abd9d2f71bec1a1070f4ef194916e13b65
Windows XP might use mixed case in hardware ID (VID / PID) string.
Cherry-picked from G#1221.
Change-Id: I86fa63e050cd9b9de5a1beac65b81028e0f86a9d
Signed-off-by: Dominik Riebeling <Dominik.Riebeling@gmail.com>
Make local HttpDaemon for testing use a random unused port instead of a fixed
one. Avoids possible issues with the port chosen already being used on the
local machine.
Change-Id: I1ca10b7e5ce198350e14321afc50c36d78b1c0b4
HttpGet::getFile() always returns the same value. Remove the return value since
it isn't necessary. Add some missing function documentation comments.
Change-Id: I1cee242211272a996437b10dbc8de791b3fc3d67
QNetworkAccessManager can handle file:// URLs without additional work. Make
HttpGet aware of that so you can now also use it to retrieve file:// URLs. Add
a unit test for it as well.
Change-Id: If64b57453460b70bca9e5b0c725bb78344617bcd
Qt5 uses a different name for the accessibility plugin. Cherry-picked from
G#1221.
Change-Id: If32eafa053a176ba24b4595826593023ed808164
Signed-off-by: Dominik Riebeling <Dominik.Riebeling@gmail.com>
Make sure to handle if retrieving the device description ends up with a NULL
data buffer pointer. Also switch handling the retrieved string using QString.
Fixes a crash reported in the forums.
Change-Id: I6e95a411308e85656cd78ddcecb1bcee165864d0
Windows doesn't have which, so building natively on Windows didn't create
translations anymore. Use a which-less approach instead.
Change-Id: I7b4c40b26d68da54277a148e8e2d76ac81061c8b
Check for lrelease and always try to run it if found. If not found show a
warning. This avoids build problems for certain setups which previously
required -config dbg to complete.
Change-Id: I60f0f49adc8455743afc5e4d23294ce0729f38d2
Update to latest quazip release. Note that quazip is now LGPL and not GPL /
LGPL dual licensed anymore.
Change-Id: Ie1e975b5b546dd31218eef9df472527493fe81e0
This loader is needed to use Rockbox on iBasso DX50/DX90 devices. It replaces
/system/bin/MangoPlayer.
It expects
- the original firmware MangoPlayer as /system/bin/MangoPlayer_original
- the chooser.bmp file as /system/chooser.bmp
- the rbmissing.bmp file as /system/rbmissing.bmp
- the usb.bmp file as /system/usb.bmp
- Rockbox in /mnt/sdcard/.rockbox/ (internal device storage accessable via USB)
On first boot or if the device is booted with the hold switch engaged (upper,
locked position) this loader will let the user choose between Rockbox and the
orginal firmware MangoPlayer. It remembers the last choice and will start the
choosen player an following boots.
In the chooser screen
- the device can be powered off with a power button long press.
- Rockbox can be startet with the "Next/Fast Forward" button or by touching the
right part of the touchscreen.
- the orginal firmware MangoPlayer can be startet with the "Previous/Rewind"
button or by touching the left part of the touchscreen.
If Rockbox can not be found/executed than a "Rockbox is missing" screen will be
shown and the orginal firmware MangoPlayer will be started after 30 seconds.
This loader will (try to) restart Rockbox or the orginal firmware MangoPlayer if
something unexpected happens.
This loader can be installed via a customized firmware image (update.img) or
manually via the Android Debug Bridge (if you get adbd started on the device).
This is a rewrite and code clean up of the original submission, eliminating the
need for a custom Android Vold. This loader "knows", when Rockbox has exited due
to a USB mass storage connection remounting /mnt/sdcard and acts accordingly,
displaying a "USB connection" screen while waiting to restart Rockbox.
Change-Id: I2698e173437f9c7aa1ff40649a290220e2ee0439
The port to for this two targets has been entirely developped by Ilia Sergachev (alias Il or xzcc). His source
can be found at https://bitbucket.org/isergachev/rockbox . The few necesary modifications for the DX90 port
was done by headwhacker form head-fi.org. Unfortunately i could not try out the final state of the DX90 port.
The port is hosted on android (without java) as standalone app. The official Firmware is required to run this port.
Ilia did modify the source files for the "android" target in the rockbox source to make the DX port work. The work I did
was to separate the code for DX50 (&DX90) from the android target.
On this Target Ilia used source from tinyalsa from AOSP. I did not touch that part of the code because I do not understand it.
What else I changed from Ilias sources besides the separation from the target "android":
* removed a dirty hack to keep backlight off
* changed value battery meter to voltage battery meter
* made all plugins compile (named target as "standalone") and added keymaps
* i added the graphics for the manual but did not do anything else for the manual yet
* minor optimizations
known bugs:
* timers are slowed donw when playback is active (tinyalsa related?)
* some minor bugs
Things to do:
* The main prolem will be how to install the app correctly. A guy called DOC2008 added a CWM (by androtab.info) to the
official firmware and Ilia made a CWM installation script and a dualboot selector (rbutils/ibassoboot, build with
ndk-build). We will have to find a way to install rockbox in a proper way without breaking any copyrights.
Maybe ADB is an option but it is not enable with OF by default. Patching the OF is probably the way to go.
* All the wiki and manual
to build:
needed: android ndk installed, android sdk installed with additional build-tools 19.1.0 installed
./tools/configure
select iBasso DX50 or iBasso DX90
make -j apk
the content of rockbox.zip/.rockbox needs to be copied to /system/rockbox/app_rockbox/rockbox/ (rockbox app not needed)
the content of libs/armeabi to /system/rockbox/lib/ (rockbox app needed)
The boot selector is needed as /system/bin/MangoPlayer and the iBasso app as /system/bin/MangoPlayer_original. There
is also the "vold" file. The one from OF does not work with DX50 rockbox (DX90 works!?), the one from Ilia is necessary.
Until we have found a proper way to install it, it can only be installed following the instructions of Ilia on his
bitbucket page, using the CWM-OF and his installation script package.
Change-Id: Ic4faaf84824c162aabcc08e492cee6e0068719d0
Reviewed-on: http://gerrit.rockbox.org/941
Tested: Chiwen Chang <rock1104.tw@yahoo.com.tw>
Reviewed-by: Michael Giacomelli <giac2000@hotmail.com>
With current MinGW using c99 as standard the compiler causes problems with some
types. Use gnu99 standard instead which doesn't do this.
Change-Id: I731f58025645ae88ac226593a2b2a62140285ee8
MSVC needs to use __inline instead of inline when compiling C code (the inline
keyword is only avaliable in C++). Use the preprocessor to work around this.
Change-Id: Ic9884a7421cee7dc7c943ab205312f50233fb100
When building with MSVC we need to add the msvc folder to the include list, and
remove the libraries from the dependencies since they need to get built
separately.
Change-Id: I297787f32495da4541c67bfef549b4d1ad68dd18
Newer versions of Xcode / OS X don't support PPC code anymore and replace gcc
with clang. When clang is detected assume we want to build for the default
architecture only and change the minimum OS X version to 10.5.
Change-Id: I5843fa9bb3d957ec6f0a537e857608ad99c31517
- Qt5 doesn't support PPC anymore, so always build for x86 only.
- Qt5 requires the use of the multimedia module (as Windows).
Change-Id: I7d54faffe9d2fb557f55234ba7b81a508d92a38b
PBHGetVolParmsSync() is not available when building with 64bit. The replacement
FSGetVolumeParms() is available on 10.5+ only. Use the latter when building
with target version 10.5+. This requires builds targeting 10.4 to 32bit and
allows building as 64bit when targeting 10.5+.
Change-Id: Ic53217f3090147bea473613335f9482623a470bd
The old include path is actually a symlink for compatibility. Newer SDK
versions remove that symlink to the include breaks.
Change-Id: I74317557840f1886cebc1ce099e103dc415eabc0
Several devices, including the Fuze+ have great trouble recovering from
very low battery states, even in the presence of USB power. This is partly
due to buggy Sigmatel boot stubs and Rockbox bootloader doing unsafe power
operations on boot (should be fixed soon). In such a state, it is impossible
to boot either the OF and Rockbox, so only the recovery mode is available.
With this commit, mkimxboot can now create a very small stub which only
does one thing but does it well: setup charging to recover from any situation.
It does not provide a fancy charging screen or whatever, screen will just
stay black and the device will slowly charge at ~100mA. When the battery is
back to a normal level, just unplug and boot normally.
Change-Id: Ib50880af85ed1f4f64a7eed0f2221e73c889c351
OS X ar operates on fat libaries. In this case updating the library isn't
possible and when those change ar will only return an error. Remove the output
file prior to running ar to work around this limitation.
Change-Id: I7ebc66efd092a8e6037ae86a3658afe6b4da777f
Instead of having to update it every year just drop it. We have the build date
in the binaries we provide, and the years it has been developed can be
retrieved via git anyway.
Change-Id: Ib33ee851883146509034c405cd65552a0f67194e
Command line order is important with newer gcc versions. mkzenboot extends
LDOPTS but the linker would ignore that since no object using it has been
mentioned on the command line. Moving it to the end should fix this.
Change-Id: I081e86fa88f95dba6077a50f2b4315bf3a805ae5
- Prevent the Changelog showing up when closing the configuration dialog if
"Show on startup" is enabled.
- Increase dialog size a bit.
- Detect and link Gerrit IDs.
Change-Id: I049be3c38a57b2559f2a78392b785fa51ec99dc1
When saving the system info from the progresslogger it shouldn't have knowledge
about the format of the data provided by getInfo(). Instead of relying on the
output being HTML formatted make getInfo() accept a parameter that indicates if
the data is to be formatted as HTML or text.
Change-Id: I733fe1a148e51b70ea1361d8feccffd7cbccd3d7
MSVC doesn't understand the gcc specific -Wno-unused-local-typedefs option.
Don't add it in this case.
Change-Id: I7ffb6c0c9c797eaad85975199c386020c464ca7b
We're compiling cutelogger directly, not as DLL. Therefore we must not add
__declspec attributes to the header.
Change-Id: I41b87fd4ba34dfbcd0d37245ff1c1f279139bb33
Change tracing from qDebug() to use cutelogger, which is available under the
LGPL2.1. This allows to automatically add filename and line number to the log,
and also provides multiple log levels.
Change-Id: I5dbdaf902ba54ea99f07ae10a07467c52fdac910
The build system used by rbutil is not very robust: all the files
are eventually compiled to the same directory so we cannot have
two files with the same name (system.c would conflicts with
system.cpp) so rename one file to avoid this. Also change all
include directives to local ones because we don't have to expose
the entire mspack source to inclusion.
Change-Id: I3fe0638d69fdc30566eb9425abfe33c807678b28
Reviewed-on: http://gerrit.rockbox.org/417
Reviewed-by: Dominik Riebeling <Dominik.Riebeling@gmail.com>
The old tools/mkzenboot has a number of problems: very hard to maintain,
poor integration with rbutil. Restart from scratch by recycling all the
crypto and descrambling code, rewrite the actual firmware modification part
to handle all scenarios in a much clearer way. The code is ready to be
integrated into Rockbox Utility, by using the very similar interface to
mkimxboot.
I copied all the keys from the old mkzenboot, so it can potentially support
the older Creative ports, but since this is untested, I prefer not do so
at the moment. However, I did add a "mixed" boot option to support the
dualboot style used in the older ports.
Change-Id: I80cfc48fa78187baa1b1692e8a30ec7137cea37b
When Rockbox Utility is started for the first time, a new version is started or
the user selected to do so on startup a changelog window is shown.
Change-Id: Ic223e092a09d31ccbbfcd9b973355225cac27632
Use a function instead of looking for an existing entry and creating a new one
if necessary every time.
Change-Id: I7b385dad7366f27370545a7d1a9f7052510cca11
Now boot to RB if play/pause is pressed during 1 second, and to OF if
back is pressed 1 second. Otherwise power off. If hold is on, also power
off. In USB and alarm context, always boot and back determines OF vs RB.
Change-Id: Ie1d6c971901d6473255461cc7d71a5ee3177ecad
If a single player is detected it might still have ambiguous as state due to
the mountpoint not being found. Make sure to display a sensible error message
in that case.
Change-Id: I7d62e739019b26a583fe6aab502d0f870e67587e
The old detection code simply assumed only one player to be connected and threw
all information it could find together, causing wrong results in various cases.
Rewrite it to better handle this.
- Don't expect only a single player to be attached. Return a list of players
found instead. The configuration dialog can then show the user a list to
select from. This is not implemented yet, the configuration dialog will only
show the devices found and tell the user to disconnect all but one.
- Handle ambiguous cases better. A player found that is ambiguous is treated as
such, and if refining the result didn't lead to a single match for each
possible player a single entry is created that indicates it being ambiguous.
The current code needs a bit of additional cleanup (the result exposes internal
data to the caller it shouldn't) to be done later.
Change-Id: I22dc2f73cdd6a9d90c34f3a0703aa9e0a2d2087a
Use insertMulti() instead of insert() when adding found USB devices to the
list. This means the keys of the list will now be ambiguous. This is not a
problem since the value is only used to display the user a nice string.
Previously we'd loose two identical devices attached to the system since the
second one would overwrite the first.
This does not apply for Windows, since Windows will list each function of a
composite device. This results in a device running Rockbox (with HID enabled)
showing up twice, which isn't wanted.
Change-Id: I1306b71122a210c55871ff8e14d2b5a04012cc4e
In preparation of giving the user a list to choose from add displaying a list
of all devices connected. Since devices might be ambiguous (multiple devices
share the same USB ID but detecting by other means failed) the listed devices
might exceed the number of actually attached ones.
Change-Id: Ice52da15523e5f3493a6fb687392301c4d5b8a36
I was too aggressive when converting reads to standard reads, this
one is memory based and not file based
Change-Id: Ibe7162894cc44cbd79f56cafe7136bda0f76bcdc
When using variadic macros there's no need for IF_MD2/IF_MV2 to deal
with function parameters. IF_MD/IF_MV are enough.
Throw in IF_MD_DRV/ID_MV_VOL that return the parameter if MD/MV, or 0
if not.
Change-Id: I7605e6039f3be19cb47110c84dcb3c5516f2c3eb
Rewrite dualboot in C code instead of assembly. Also properly
handle subtarget and simply Makefile. This should make the
dualboot stub more readable and easier to extend. The new code
also gracefully handles power up from RTC alarm on imx233.
Change-Id: I7c225254b1463a97e76b6cb4de476aa2d2c9d2f9
Refactor code.
This tool can now either load a scrambled rockbox
firmware (in which case the model is check against the
firmware), or any ELF file. This is useful for example
for hwstub which produces a ELF file and still needs
to be loaded by producing a SB file.
Change-Id: I7aa381b3f6587788d1950793e89ce5608c53cccc
The mkimxboot was becoming messy with juge functions and
redundant code. Factor reading/writing/loading code into smaller
functions. Introduce the concept of rockbox firmware to simplify
support of other formats than scramble.
Change-Id: I3a61295ca5abca1a0eee8c9e8709c6b8dfa256a6
Change configuration to use filtered mountpoints list. Add HFS+ to the list of
supported filesystems -- while Rockbox doesn't run on HFS+ MacPods will use
that format, and not having them in the list will then make OS X users wonder
why their Ipod isn't showing up. This might need to get revised later.
Change-Id: I5eeeb05be6780cb3952a0081df0ce782eca01589
Some devices contain a bin file in the root folder of the player. This caused
confusion a couple of times, since the installer asks for a bin file. Add a
note that the required file is not present on the player and will get removed
automatically.
Change-Id: I6cd5c25b319770555c3939377a3ed86ed3181dad
OS X' gcc 4.0 (still used to be able building fat binaries) doesn't ignore that
option and instead errors out.
Change-Id: Id5927ff04dc606480af9add554eeaa75c169510f
On OS X we're passing -arch twice which dependency generation doesn't like.
Since we don't have dependencies that differ between architectures simply don't
add them during dependency generation.
Change-Id: Ie3d58bf9af31edcacb88345c7debf39eb798e302
If Rockbox Utility has no configuration file on the machine updateSettings()
will overwrite the global cache folder settings with an empty string before the
value is set properly by the user confirming the configuration dialog. QDir()
getting an empty string will result in the current working directory getting
used, and thus the temporary files ending up there.
On Windows most users are unlikely to have noticed this since running the
executable from within the distribution zip file will make Windows execute it
in the systems temporary path.
Change-Id: I7724a82af403955786798c7380198086837e128f
gcc 4.8 introduces this new warning which some Qt4 headers triggers. Since we
don't want to change Qt simply disable it. The warning doesn't show up when
compiling with Qt5, so only disable it for Qt4.
Change-Id: Ia8fcf0859e0a370def36bc9b43ed4d096a80db28
Automatically generate dependency files for all sources so changes in headers
are picked up automatically. Use one dependency file for each source file,
since that allows to create them without using external tools (except the
compiler of course).
Change-Id: I246c1ceb525692547af22a2e32c4bab0c11507e1
Windows mkdir doesn't know about the -p option and requires paths to use \ as
path separator. Try to detect when building on Windows and use the Windows
internal function instead of relying on a compatible mkdir in the path.
Change-Id: I47d47d45edeb38c672321f77d6e91268bf744dba
Create the object - source dependency internally and use a more generic rule
for compiling. Removes the need for explicit rules for source files located in
a different folder.
This adds the limitation for SOURCES and LIBSOURCES to only hold C files.
Change-Id: I56f6a4b1e7df36347cd2f54051e072251f456092
Make sure its value quotes are properly escaped. Otherwise make on Windows
causes problems. Also, expand CPPDEFINES only once.
Change-Id: I52e91f17626b2596f389811b22abc12d94f721d1
Setup AR before checking for ccache to avoid adding ccache to ar. Setup CC and
CFLAGS in the beginning as well. Quote ar and system speex options to fix
building with ccache enabled.
Change-Id: I21714f0849e990abeac72dcda52c81474e090934
We need this only for cross compiling. Trying to figure the compiler prefix
fails if the compiler isn't gcc (i.e. clang), and we only support gcc when
cross compiling.
Change-Id: I822e1b47ec7e9d7e9fdeae8ccf3b8d417a472ef9
Previously several additional rules were added by qmake to build the required
libraries. This has a couple of problems on Windows, requiring the use of a
msys shell.
Additional variables are passed as environment variables. Windows doesn't
understand this. Passing the variables via make command line argument works but
make won't be able to change those variables anymore, breaking things. Use
intermediate variables passed via make command line that are then exported by
the called Makefile. This doesn't work in the generated Makefile since the
export lines must not be part of a rule.
Also cleans up the project file a bit.
Change-Id: Iaffb059ce8bafe17a35bd1e0a74ae7acd966c138
The new autodetection will always use USB IDs to identify players (among other
means). Add missing IDs for players the current implementation relies on other
means for detection only.
Change-Id: I037c23705518210b6ed93b4d13ccb96d933aa198