Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
594f833
Limbo Emulator v6.0.0 (QEMU v2.9.1)
Sep 21, 2021
3ba02c7
instruction added for QEMU 2.9.1
Sep 21, 2021
90bd17c
instructions
Sep 21, 2021
3bfb6e9
Limbo Emulator v6.0.1 (QEMU 2.9.1)
Sep 21, 2021
110c5fd
fix log file for arm
Sep 21, 2021
b889ec9
centralized package info
Sep 21, 2021
77a1c22
fixed setting append
Sep 21, 2021
ef5fb7c
use merged manifest
Sep 21, 2021
90394a7
Limbo v6.0.0 release
Sep 22, 2021
9e3f2e3
Limbo v6.0.0 release
Sep 22, 2021
43e52a1
Limbo v6.0.0 release
Sep 22, 2021
8ac6151
Limbo version 6.0.0
Sep 22, 2021
7311976
Limbo v6.0.1
Sep 22, 2021
a374f53
support for older devices
Sep 23, 2021
e9e010e
support for aaudio without breaking support for older devices
Sep 23, 2021
0c5e375
fix keymapper restore orientation when desktop mode
Sep 23, 2021
1d566bc
fix crash when mouse is outside of window
Sep 23, 2021
74e7d8a
fix mouse crash for 5.1.0
Sep 23, 2021
77474ec
install qemu version file
Sep 24, 2021
f28056c
qemu version
Sep 24, 2021
99a5bfb
one internal version only with build variants
Sep 24, 2021
ecb2ee0
one version only with variants
Sep 24, 2021
1caf270
revert to previous
Sep 24, 2021
6030e29
Limbo ver 6.0.0
Sep 25, 2021
7659250
Update README.md
limboemu Sep 26, 2021
e73d191
Disk enhancements
Sep 30, 2021
256129d
enhancements for booting
Sep 30, 2021
1bc4229
moved accel options after extra params
Dec 25, 2021
496e3a1
fixed dialog software updates option
Dec 25, 2021
1ba5235
added default for disk cache
Dec 25, 2021
b706773
fixed crash when no machine loaded
Dec 25, 2021
77a1a3b
support for import custom bios
Dec 25, 2021
5e0641e
manifest 6.0.1
Feb 27, 2022
78f70c2
trigger saving edit text before start vm
Feb 27, 2022
587d2fc
clean up
Feb 27, 2022
d79bfd3
file manager changes
Feb 28, 2022
c8c51b0
fix gcc support
Mar 3, 2022
895f865
fixed instructions
Mar 3, 2022
e3afe0b
fixed patches
Mar 3, 2022
5232ffe
ignore qemu versions
Mar 3, 2022
0966f6d
refactor executor to c
Mar 3, 2022
1159aa4
Merge branch '6.0.1-native' into Branch_Branch_6.0.1
Mar 5, 2022
3442a71
changelog
Mar 5, 2022
4635d01
check for undefined symbols
Mar 5, 2022
62d4aa6
convert to c
Mar 5, 2022
cb29b69
fixed breakpoint tb invalidation
Mar 5, 2022
69236c1
updated defaults
Mar 5, 2022
887c6a6
software update checker by default is false
Mar 9, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ gradle
/gradlew.bat
obj/
jniLibs/
QEMU_VERSION

jnilibs
limbotest
Expand All @@ -69,6 +70,5 @@ limbotest

sync.sh
gitsync.sh
/limbo-android-lib/src/main/jni/qemu.5.1.0
/limbo-android-lib/src/main/jni/qemu.2.9.1

/limbo-android-lib/src/main/jni/qemu-2.9.1/
/limbo-android-lib/src/main/jni/qemu-5.1.0/
21 changes: 19 additions & 2 deletions README.developers
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ https://github.com/limboemu/limbo
2. Requirements:

Android SDK
Android NDK: r14b/gcc or r23/clang
Android NDK: r14b/gcc or r23b/clang
Android Studio (3.1.1 preferred)
Android device with Android OS 8.0 (Oreo) and above
Linux Desktop pc (Ubuntu preferred)
Make sure you have the following packages installed, if not run:
sudo apt-get install make autoconf automake git python binutils
sudo apt-get install libtool-bin pkg-config flex bison gettext texinfo
sudo apt-get install libtool-bin pkg-config flex bison gettext texinfo rsync
For development you can use your own editors Geany is highly
recommended for editing the native code

Expand Down Expand Up @@ -56,6 +56,10 @@ https://github.com/limboemu/limbo
wget http://download.qemu-project.org/qemu-5.1.0.tar.xz -P /tmp/
tar -xJf /tmp/qemu-5.1.0.tar.xz
mv qemu-5.1.0 qemu
# For QEMU version 2.9.1:
wget http://download.qemu-project.org/qemu-2.9.1.tar.xz -P /tmp/
tar -xJf /tmp/qemu-2.9.1.tar.xz
mv qemu-2.9.1 qemu

##### GET glib
wget https://ftp.gnome.org/pub/GNOME/sources/glib/2.56/glib-2.56.1.tar.xz -P /tmp/
Expand Down Expand Up @@ -97,6 +101,8 @@ https://github.com/limboemu/limbo
# example for 5.1.0:
cd ./limbo-android-lib/src/main/jni/qemu/
patch -p1 < ../patches/qemu-5.1.0.patch
# for 2.9.1:
patch -p1 < ../patches/qemu-2.9.1.patch

### Apply glib patch for Limbo:
cd ./limbo-android-lib/src/main/jni/glib/
Expand Down Expand Up @@ -197,6 +203,16 @@ https://github.com/limboemu/limbo
export BUILD_GUEST=x86_64-softmmu,aarch64-softmmu
make limbo

8) To build limbo for older devices with gcc set the following options:
export NDK_ROOT=/home/dev/tools/ndk/android-ndk-r14b
export USE_GCC=true
export BUILD_HOST=armeabi-v7a
export BUILD_GUEST=x86_64-softmmu
export USE_QEMU_VERSION=2.9.1
export USE_AAUDIO=false

For more options see android-limbo-config.mak

You should now have the following libraries in these 2 folders:

limbo-android-lib/src/main/jniLibs/<EABI>/
Expand Down Expand Up @@ -297,6 +313,7 @@ https://github.com/limboemu/limbo
[core]
eol = true
autocrlf = input
fileMode = false

===============================================================================
10. Run
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Limbo Emulator (QEMU) for Android
#
# For APK Downloads, Guides, and Help visit the Limbo Wiki:
# https://github.com/limboemu/limbo/wiki
# For APK Downloads, Guides, and Help visit:
# https://virtualmachinery.weebly.com

Limbo is a QEMU-based emulator for Android supports emulation for these architectures:
x86/x86_64
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
501.00
600.01
2 changes: 1 addition & 1 deletion limbo-android-arm/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ android {

defaultConfig {
applicationId "com.limbo.emu.main.arm"
minSdkVersion 26
minSdkVersion 21
targetSdkVersion 29
ndk { abiFilters "armeabi-v7a","arm64-v8a", "x86", "x86_64" }
}
Expand Down
67 changes: 8 additions & 59 deletions limbo-android-arm/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,75 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.limbo.emu.main.arm"
android:installLocation="auto"
android:versionCode="60000"
android:versionName="6.0.0-arm" >

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-feature android:glEsVersion="0x00020000" />
android:versionCode="60001"
android:versionName="6.0.1-arm">

<application
android:name="com.max2idea.android.limbo.main.LimboApplication"
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@drawable/limbo"
tools:replace="android:label"
android:label="Limbo ARM Emulator"
android:requestLegacyExternalStorage="true"
android:largeHeap="true" >
>
<activity
android:name=".LimboEmuActivity"
android:name="LimboEmuActivity"
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
android:label="Limbo ARM"
android:launchMode="singleTask"
android:launchMode="singleTop"
android:theme="@style/Theme.AppCompat.NoActionBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.max2idea.android.limbo.main.LimboFileManager"
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
android:label="File Manager" >
</activity>
<activity
android:name="com.max2idea.android.limbo.main.LimboSDLActivity"
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
android:label="@string/app_name"
android:launchMode="singleTask"
android:theme="@style/Theme.AppCompat.NoActionBar" >
</activity>
<activity
android:name="com.max2idea.android.limbo.main.LimboSettingsManager"
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
android:label="Settings" >
</activity>
<activity
android:name="com.max2idea.android.limbo.links.LinksManager"
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
android:theme="@style/Theme.AppCompat.NoActionBar"
android:label="Downloads" >
</activity>
<service
android:name="com.max2idea.android.limbo.machine.MachineService"
android:enabled="true"
android:exported="false"
android:label="Limbo Service" >
<intent-filter>
<action android:name="com.max2idea.android.limbo.action.STARTVM" />
</intent-filter>
</service>

</application>

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,10 @@ public void onCreate(Bundle bundle){
getString(R.string.DebianArmLinuxDescr),
"https://github.com/limboemu/limbo/wiki/Debian-ARM-Linux",
LinksManager.LinkType.ISO));
Config.ideInterfaceType = "scsi";
super.onCreate(bundle);
//TODO: change location to something that the user will have access outside of limbo
// like internal storage
Logger.setupLogFile(LimboApplication.getInstance().getCacheDir() + "/limbo/limbo-arm-log.txt");
Logger.setupLogFile("/limbo/limbo-arm-log.txt");
}

protected void loadQEMULib(){
Expand Down
2 changes: 1 addition & 1 deletion limbo-android-lib/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ android {
buildToolsVersion '29.0.3'

defaultConfig{
minSdkVersion 26
minSdkVersion 21
targetSdkVersion 29
}
buildTypes {
Expand Down
41 changes: 37 additions & 4 deletions limbo-android-lib/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.limbo.emu.lib"
android:installLocation="auto"
android:versionCode="1"
android:versionName="1" >
>

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
Expand All @@ -16,6 +17,38 @@
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-feature android:glEsVersion="0x00020000" />


</manifest>
<application
android:name="com.max2idea.android.limbo.main.LimboApplication"
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@drawable/limbo"
android:largeHeap="true"
android:requestLegacyExternalStorage="true"
android:theme="@style/Theme.AppCompat">

<activity
android:name="com.max2idea.android.limbo.main.LimboFileManager"
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
android:label="File Manager" />
<activity
android:name="com.max2idea.android.limbo.main.LimboSDLActivity"
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
android:label="@string/app_name"
android:launchMode="singleTask"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<activity
android:name="com.max2idea.android.limbo.main.LimboSettingsManager"
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
android:label="Settings" />
<service
android:name="com.max2idea.android.limbo.machine.MachineService"
android:enabled="true"
android:exported="false"
android:label="Limbo Service">
<intent-filter>
<action android:name="com.max2idea.android.limbo.action.STARTVM" />
</intent-filter>
</service>
</application>
</manifest>
45 changes: 26 additions & 19 deletions limbo-android-lib/src/main/assets/CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,33 +1,40 @@
* Limbo Legacy v6.0.1
Added qemu disk cache option
Added qemu hdd interfaces (tap on the disk icon)
Added ignore breakpoint tb invalidation option
Apply acceleration option after extra params
Added option for importing custom BIOS
Fixed update checker dialog box
Fixed crash when no machine is loaded
Fixed problem not saving edit text when machine starts
Fixed legacy file manager
Fixed old ndk/gcc support

* Limbo Legacy v6.0.0
Using QEMU 2.9.1 for better performance!
WARNING:
This is version much faster than 5.x but very old and behind many security patches!
Make sure you trust the virtual images and any software you install within the vm!
Changed minimum SDK version to 26 (Oreo and above).
You can still build with Android API 21 without Aaudio option.
Added Android Aaudio native audio interface for lower latency, see settings.
Using 22050 sample rate instead of 44199 for better audio with lesser clicking.
Fixed crashing when resuming due to audio buffer writing.
Fixed android notification not dismissing.
Removed internal VNC client you should check the Wiki for alternative VNC clients.
Built both variants for QEMU 5.1.0 for stability and 2.9.1 for better performance.
WARNING: QEMU 2.9.1 version is much faster than 5.1.0 but very old and
behind many security patches! Install only virtual images and software you trust!
Fixed SDL resizing after rotating and resuming application.
SDL user interface can now disconnect and resume.
VNC Password and Allow External VNC clients are now under settings.
Moved Screen options to settings.
New Pause button for pausing when started VNC user interface.
Machine architecture was not needed so it is now removed, use cpu instead.
Added support for changin idle refresh rate for SDL.
Created KeyMapper for mapping keys and mouse buttons for gaming, see Wiki for info.
Removed internal VNC client you should check the Wiki for alternative VNC clients.
VNC Password and Allow External VNC clients are now under settings.
New Pause button for pausing when started VNC user interface.
Mouse enhancements for Touchscreen and External Mouse.
Absolute mouse devices support only guests that have usb-tablet drivers installed.
Added new out of bounds prevention option for mouse.
Added new Key and Mouse delay options.
Global screen options are now moved to Menu Settings.
Machine architecture was not needed so it is now removed.
Removed Shared Folder because it is buggy.
Internal redesign of the ui dispatching and interface with native code.
Added Android Aaudio native audio interface for lower latency (Oreo and above only).
Using 22050 sample rate instead of 44199 for better audio with lesser clicking.
Fixed crashing when resuming due to audio buffer writing.
Internal redesign of the Android user interface.
Better build environment for development.
Fixed clang support with ndk r23
Upgraded libraries to ffi ver 3.3 and pixman ver 0.40.0
Removed patch for QEMU 4.0.0 the only versions currently support are 2.9.1 and 5.1.0.
Building with ndk r23 clang by default, r14b gcc is also supported.
Upgraded libraries: ffi 3.3 and pixman 0.40.0


* Limbo v5.1.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ public static boolean fileValid(String path) {
return false;
} else {
File file = new File(path);
file.setWritable(true);
return file.exists();
}
return true;
Expand Down Expand Up @@ -370,18 +371,18 @@ public void run() {
t.start();
}

public static String LoadFile(Activity activity, String fileName, boolean loadFromRawFolder) throws IOException {
public static String LoadFile(Context context, String fileName, boolean loadFromRawFolder) throws IOException {
// Create a InputStream to read the file into
InputStream iS;
if (loadFromRawFolder) {
// get the resource id from the file name
int rID = activity.getResources().getIdentifier(activity.getClass().getPackage().getName() + ":raw/" + fileName,
int rID = context.getResources().getIdentifier(LimboApplication.getInstance().getClass().getPackage().getName() + ":raw/" + fileName,
null, null);
// get the file as a stream
iS = activity.getResources().openRawResource(rID);
iS = context.getResources().openRawResource(rID);
} else {
// get the file as a stream
iS = activity.getResources().getAssets().open(fileName);
iS = context.getResources().getAssets().open(fileName);
}

ByteArrayOutputStream oS = new ByteArrayOutputStream();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,10 @@ public class Help {
private static final String TAG = "Help";

public static void showHelp(final Activity activity) {
PackageInfo pInfo = LimboApplication.getPackageInfo();

final AlertDialog alertDialog;
alertDialog = new AlertDialog.Builder(activity).create();
alertDialog.setTitle(Config.APP_NAME + " v" + pInfo.versionName + " (" + Config.emuVersion.name().replace("_", ".") + ")");
alertDialog.setTitle(Config.APP_NAME + " " + LimboApplication.getLimboVersionString()
+ " " + "QEMU" + " " + LimboApplication.getQemuVersionString() );

LinearLayout mLayout = new LinearLayout(activity);
mLayout.setOrientation(LinearLayout.VERTICAL);
Expand All @@ -66,7 +65,7 @@ public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
LimboSettingsManager.setPromptUpdateVersion(activity, b);
}
});
checkUpdates.setChecked(true);
checkUpdates.setChecked(LimboSettingsManager.getPromptUpdateVersion(activity));
mLayout.addView(checkUpdates);
alertDialog.setView(mLayout);
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, activity.getString(R.string.GoToWiki),
Expand Down
Loading