Galaxy S7 Unbloater - Samsung Galaxy S7 Edge Guides, News, & Discussion

Hi,
this is my first thread. From time to time, I am re-installing my smartphone from scratch. I always need to unbloat it manually and it takes me too much time. I have created a NodeJS Script combined with ADB to do it automatically.
NO ROOT NEEDED, JUST ADB ​
Tested under windows 10.
Note: I have packed the Linux and MacOS binaries but you will need to replace the tools\adb.exe binary (with the one for your operating system) and change the pathes in the package.json > config file.
Requirement
- Make sure you have installed the USB driver for Samsung S7.
- Plug your smartphone USB cable in your phone and your computer.
- Activate the USB Debugging Mode and authorize the computer on your smarthphone when asked.
NOTE: Make sure it's the only Android device in debug mode connected to your computer.
Unbloat your phone
- Download the script v1.0.1 (https://drive.google.com/file/d/1An5lKD897FgWbZ0216OsBXpR9sAQgsa1/view?usp=sharing)
- On Windows: double click the `index-win.exe` file.
- Wait until it finishes.
- Restart your phone (optional but recommended)
CHANGELOG
V1.0.2
- Add configurable ADB path in package.json
- Add counter for number of unbloated
- Applications that will be removed (you can still re-install them using ADB or Google Play)
Code:
const TERMS = [
"com.facebook", // Facebook
"samsung.android.app.memo", // Samsung memo
"samsung.android.app.watchmanager", // Samsung Wearable
"com.microsoft.office", // Microsoft Office
"com.microsoft.skydrive", // Microsoft OneDrive
"com.skype.raider", // Skype
"com.google.android.music", // Android old Google Play Music
"com.samsung.android.calendar", // Samsung Calendar
"com.samsung.android.spay", // Samsung Pay
"com.samsung.android.app.sbrowseredge", // Samsung internal browser
"com.sec.android.app.sbrowser", // Samsung browser
"com.instagram.android",
"widgetapp.yahooedge",
"com.samsung.android.email",
"com.google.android.videos",
"com.google.android.talk", // Google Hangout
"com.samsung.android.mobileservice", // Samsung experience
"com.samsung.android.samsungpass", // Samsung Pass
"com.samsung.android.easysetup", // Samsung SmartThings
"com.samsung.android.oneconnect", // Samsung SmartThings
"com.samsung.android.voc", // Samsung Member
"com.samsung.voiceservice", // Samsung S Voice
"com.sec.android.app.samsungapps", // Samsung Galaxy Store
"com.samsung.android.game.gamehome", // Samsung Game Launcher
"com.sec.android.widgetapp.samsungapps", // Samsung Widget apps
"de.axelspringer.yana.zeropage", // UpDay
"com.samsung.android.mateagent", // Samsung Galaxy Friends
];

OUTPUT:
Code:
Unbloat Samsung via ADB
303 packages detected!
[...]
10 application(s) unbloated!
DONE YOU CAN EXIT!

I have not tested it on Linux and MacOS.
I didn't tested the script for other samsung's phone. But it should work since it would be the same commands.

Related

[TUT] Create your First Widget Step by Step

Hi guys, as the Title implies this Tutorial is just a Beginner's Guide on Creating Widgets (Widget that displays current time) and how do they work on an Android device.
Pre-requisites :
Install the Android SDK, Eclipse and ADT Plugin (If you're using Android Studio, you can modify the project like this, shared by @creepyncrawly )
Basic Java Knowledge (Not mandatory, as Google is there for you)
Already have created basic HelloWorld apps specified here and here.
So, let's start with the Project shall we ...
Starting Development :
Step 1: Open up your Eclipse, click File > New > Other > Android Project
The project name could be given as "HelloWidget", and then select any Build Target Platform of your choice (Android 2.1/2.2/2.3/4.0 etc.), and then specify a package name.
And then, uncheck the probably already checked Box “Create Activity”. We won’t create an Activity here we just want a simple widget. Just like the below picture :
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Click to expand...
Click to collapse
Step 2 : So now as you have created your Project, lets start with the Layout and design of our widget. Open up main.xml (Path:- HelloWidget > res > layout > main.xml) and modify it like as shown in the below picture :
We have a simple linear layout with a TextView for your message to display. At this point, you will get an Error saying ERROR Error: No resource found that matches the given name (at 'background' with value '@drawable/widget_bg_normal') That’s because you don’t have the widget_bg_normal resource at this point. You could download the picture I used, and you can put that picture or find your own .9.png image. Put that image (Path:- HelloWidget > res > drawable > widget_bg_normal.9.png). If you don't find a folder named drawable, just create one in that path
You'll also encounter another error suggesting that @string/widget_text can't be found. To correct that open up strings.xml (Path:- HelloWidget > res > values > strings.xml) and modify it as shown in the below picture :
Click to expand...
Click to collapse
Step 3 [Slightly big Step, don't get bored] : So, we just have finished our design part. Now we have to tell Android that we are going to have a widget. Open up AndroidManifest.xml (Path:- HelloWidget > AndroidManifest.xml) and modify it as shown in the below picture :
NOTE: minSdkVersion="15" denotes that minimum Android version required is Android 4.0.3 (API Level 15) and if you are building on Android 2.2/2.3 just leave it as default and don't edit it to 15. [In other words, it will be set default according to whatever platform versions you have downloaded]
Explanations : We declare our Broadcast Receiver which will be “HelloWidget”. Don’t forget the dot before HelloWidget, this will create the full qualified path name with the declared package at the top of the file. The Label of our application was already set by the project wizard and is located in our strings.xml.
From the Documentation, The <intent-filter> element must include an <action> element with the android:name attribute. This attribute specifies that the AppWidgetProvider accepts the ACTION_APPWIDGET_UPDATE broadcast. This is the only broadcast that you must explicitly declare. The AppWidgetManager automatically sends all other App Widget broadcasts to the AppWidgetProvider as necessary.
The meta-data tag tells android about your widget provider. In this case, the widget provider is located at HelloWidget > res > xml > hello_widget_provider.xml Create folder xml under res. Create a new XML file inside that xml folder and name it as "hello_widget_provider.xml". Create like shown in the below picture :
Now, after all these, the only thing that is missing to run our widget is the Class that extends the AppWidgetProvider which we declared in AndroidManifest.xml at the receiver-tag.
Right-Click your Project (HelloWidget) > New > Class
And create the class as shown in the below picture :
So, your new Class will look like this :
Click to expand...
Click to collapse
Step 4 : So, we have created a blank widget that actually does nothing. We'll just see for ourselves how does it looks like. Run your Application (HelloWidget > Run As > 1 Android Application) and your AVD is powered up. And voila, you should see the output as something like this as shown in the below picture :
And yes, it seems its not that crazy as we thought . Just one widget alignment mistake which could be corrected by modifying the design layout in xml, I believe.
Anyways, lets just quickly head over to the next step which would actually define the widget (The Java way)
Click to expand...
Click to collapse
Step 5 : Now, open up the HelloWidget.java (Path:- HelloWidget > src > com.coolsandie.android.widget > HelloWidget.java) file, and modify it as shown in the below picture (In order to display the Time inside the Widget, apart from displaying a default text)
I'll also give it as CODE, but I recommend not to copy-paste. Type all the codes by yourself in order to learn. Avoid writing the import statements first and directly start with class and methods. Eclipse will give a warning to import, so you can do it from there. And one more, look out for spelling mistakes, as Java is highly case sensitive language such as the letter A and a are different.
Code:
package com.coolsandie.android.widget;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Timer;
import java.util.TimerTask;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.widget.RemoteViews;
public class HelloWidget extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new MyTime(context, appWidgetManager), 1, 1000);
}
private class MyTime extends TimerTask {
RemoteViews remoteViews;
AppWidgetManager appWidgetManager;
ComponentName thisWidget;
DateFormat format = SimpleDateFormat.getTimeInstance(SimpleDateFormat.MEDIUM, Locale.getDefault());
public MyTime(Context context, AppWidgetManager appWidgetManager) {
this.appWidgetManager = appWidgetManager;
remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
thisWidget = new ComponentName(context, HelloWidget.class);
}
@Override
public void run() {
remoteViews.setTextViewText(R.id.widget_textview, "TIME = " +format.format(new Date()));
appWidgetManager.updateAppWidget(thisWidget, remoteViews);
}
}
}
Click to expand...
Click to collapse
Step 6 : So guys, we have finished it. The completely working widget should be ready by now. Run your Application (HelloWidget > Run As > 1 Android Application) and your application is synced, and it will show the output just like as shown in the below picture :
Click to expand...
Click to collapse
Finally, we have made it. It only took 6 steps for a completely working Widget.
And I hope you enjoyed this Tutorial. Its made as simple as possible, so surely anyone could give it a try.
NB: If anyone faces issues, as a last resort you can check out the Eclipse project which I've used for this Tutorial. Try importing the Project in Eclipse. Only use it, if you are really annoyed of errors. Anyways I'd recommend Trial and Error method and fixing it by your own before using mine. Download Project Source codes
FOOT-NOTE
The method onUpdate will be called at first. We create a timer that will run our MyTime-Thread every second. The constructor of the MyTime-Class gets some information to update our widget on the desktop/home screen. Get our main view that we created (at that point you could also change your layout to another design).
remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
In the run method, we set the time with our new Date and update the remote View. That’s already it. Now you have a widget that is displaying the current time.
Previous Tutorial : Extend your HelloWorld App Step by Step [Toast Concept]
Next Tutorial : How to set Icons for your Android apps
great tut buddy... so u r from cochin... me trichur ( but in dublin)
s-X-s said:
great tut buddy... so u r from cochin... me trichur ( but in dublin)
Click to expand...
Click to collapse
Thanks mate, and yes I'm from Cochin
thank you so much for these amazing and super easy tutorials!! please make a few more!!
shahrukhraza said:
thank you so much for these amazing and super easy tutorials!! please make a few more!!
Click to expand...
Click to collapse
Welcome mate, yeah sure will make more Tutorials
Hey, I am trying to follow your tutorial. But I don't understand why the error "ERROR Error: No resource found that matches the given name (at 'background' with value '@drawable/widget_bg_normal')" won't disappear. It's just like Eclipse doesn't want to accept that i have put a new folder including the picture inside the res folder. I can see both the drawble folder and the widget_bg_normal.9.png in the project explorer, but Eclipse keeps saying that no resource is found.
Edit: Hm, putting the image file inside of one of the res/drawble-Xdpi folders works. But still I don't understand why creating a new drawble folder doesn't.
elyts said:
Hey, I am trying to follow your tutorial. But I don't understand why the error "ERROR Error: No resource found that matches the given name (at 'background' with value '@drawable/widget_bg_normal')" won't disappear. It's just like Eclipse doesn't want to accept that i have put a new folder including the picture inside the res folder. I can see both the drawble folder and the widget_bg_normal.9.png in the project explorer, but Eclipse keeps saying that no resource is found.
Edit: Hm, putting the image file inside of one of the res/drawble-Xdpi folders works. But still I don't understand why creating a new drawble folder doesn't.
Click to expand...
Click to collapse
Hi, from the screenshot I see that your widget_bg_normal.9.png image is put inside the drawable folder which is inside the layout folder. That is plain false. The drawable folder should be out side the layout folder, and inside the res folder. The folder tree looks like this :
res
- drawable-hdpi
- drawable-ldpi
- drawable-mdpi
- drawable-xhdpi
- drawable
layout
- main.xml
great tutorial...thanks :good:
coolsandie said:
Hi, from the screenshot I see that your widget_bg_normal.9.png image is put inside the drawable folder which is inside the layout folder. That is plain false. The drawable folder should be out side the layout folder, and inside the res folder. The folder tree looks like this :
res
- drawable-hdpi
- drawable-ldpi
- drawable-mdpi
- drawable-xhdpi
- drawable
layout
- main.xml
Click to expand...
Click to collapse
Ok, thanks. I was pretty confused - you should change the path in your tutorial then.(Path:- HelloWidget > res > layout > drawable > widget_bg_normal.9.png)
elyts said:
Ok, thanks. I was pretty confused - you should change the path in your tutorial then.(Path:- HelloWidget > res > layout > drawable > widget_bg_normal.9.png)
Click to expand...
Click to collapse
Oops sorry, that was a mistake from my side. Corrected the OP now. Thanks for notifying.
Hehe, no problem But I have another problem. I finished Step 3 and now I want to take a look at my widget. The project doesnt show any errors and I can upload the widget to my phone. The package is on my phone but it is not shown inside my widget list. What could be the reason for this? I mean, shouldnt there be an error or something if it does not work? Did I forget something? I really dont know why I am having so much problems following simple Android tutorials...
elyts said:
Hehe, no problem But I have another problem. I finished Step 3 and now I want to take a look at my widget. The project doesnt show any errors and I can upload the widget to my phone. The package is on my phone but it is not shown inside my widget list. What could be the reason for this? I mean, shouldnt there be an error or something if it does not work? Did I forget something? I really dont know why I am having so much problems following simple Android tutorials...
Click to expand...
Click to collapse
Actually, I haven't tried this on my phone, as I simply executed it to the Emulator. Anyways select USB Debugging mode, and make sure your device is detected by the ADB. And then run your project and the widget will be installed on your phone, and when you unlock the device the widget should display on your homescreen I guess. I'll make a try and upload the screenshot of my phone, if it was successful.
coolsandie said:
Actually, I haven't tried this on my phone, as I simply executed it to the Emulator. Anyways select USB Debugging mode, and make sure your device is detected by the ADB. And then run your project and the widget will be installed on your phone, and when you unlock the device the widget should display on your homescreen I guess. I'll make a try and upload the screenshot of my phone, if it was successful.
Click to expand...
Click to collapse
That's exactly what I did. But there was nothing on my display. So I browsed the files on my phone and I can find the package with the name of my project. But I can't do anything with it. If I run the project on an AVD the same happens.
elyts said:
That's exactly what I did. But there was nothing on my display. So I browsed the files on my phone and I can find the package with the name of my project. But I can't do anything with it. If I run the project on an AVD the same happens.
Click to expand...
Click to collapse
So I just run on my phone, and it was okay, it executed.
The Steps I did was :
- My android-sdk lies in D:\android-sdk-windows
- Open Command-Prompt, and type D:\android-sdk-windows\platform-tools\adb devices
- It displayed my device, so ADB detected it.
- Open Eclipse, run your project and it will be installed on your phone.
- Then simply add the widget on your Homescreen, and also check the "Manage apps" to see whether the apk is installed.
EDIT: Check whether you get these messages in Eclipse (If executing on the device)
Code:
[2012-11-27 20:57:40 - HelloWidget] ------------------------------
[2012-11-27 20:57:40 - HelloWidget] Android Launch!
[2012-11-27 20:57:40 - HelloWidget] adb is running normally.
[2012-11-27 20:57:40 - HelloWidget] No Launcher activity found!
[2012-11-27 20:57:40 - HelloWidget] The launch will only sync the application package on the device!
[2012-11-27 20:57:40 - HelloWidget] Performing sync
[2012-11-27 20:57:40 - HelloWidget] Automatic Target Mode: using device 'xxxxxx'
[2012-11-27 20:57:40 - HelloWidget] Uploading HelloWidget.apk onto device 'xxxxxxx'
[2012-11-27 20:57:40 - HelloWidget] Installing HelloWidget.apk...
[2012-11-27 20:57:46 - HelloWidget] Success!
[2012-11-27 20:57:46 - HelloWidget] \HelloWidget\bin\HelloWidget.apk installed on device
[2012-11-27 20:57:46 - HelloWidget] Done!
EDIT2: And these messages, if running on AVD
Code:
[2012-11-27 21:29:22 - HelloWidget] ------------------------------
[2012-11-27 21:29:22 - HelloWidget] Android Launch!
[2012-11-27 21:29:22 - HelloWidget] adb is running normally.
[2012-11-27 21:29:22 - HelloWidget] No Launcher activity found!
[2012-11-27 21:29:22 - HelloWidget] The launch will only sync the application package on the device!
[2012-11-27 21:29:22 - HelloWidget] Performing sync
[2012-11-27 21:29:22 - HelloWidget] Automatic Target Mode: launching new emulator with compatible AVD 'Google'
[2012-11-27 21:29:22 - HelloWidget] Launching a new emulator with Virtual Device 'Google'
[2012-11-27 21:29:33 - HelloWidget] New emulator found: emulator-5554
[2012-11-27 21:29:33 - HelloWidget] Waiting for HOME ('android.process.acore') to be launched...
[2012-11-27 21:30:36 - HelloWidget] HOME is up on device 'emulator-5554'
[2012-11-27 21:30:36 - HelloWidget] Uploading HelloWidget.apk onto device 'emulator-5554'
[2012-11-27 21:30:36 - HelloWidget] Installing HelloWidget.apk...
[2012-11-27 21:31:35 - HelloWidget] Success!
[2012-11-27 21:31:36 - HelloWidget] \HelloWidget\bin\HelloWidget.apk installed on device
[2012-11-27 21:31:36 - HelloWidget] Done!
Most probably you'll find the widget running on your Homescreen (in Emulator). But when run on device, I had to manually set the widget on Homescreen by going into widgets section on App Drawer.
coolsandie said:
So I just run on my phone, and it was okay, it executed.
The Steps I did was :
- My android-sdk lies in D:\android-sdk-windows
- Open Command-Prompt, and type D:\android-sdk-windows\platform-tools\adb devices
- It displayed my device, so ADB detected it.
- Open Eclipse, run your project and it will be installed on your phone.
- Then simply add the widget on your Homescreen, and also check the "Manage apps" to see whether the apk is installed.
EDIT: Check whether you get these messages in Eclipse (If executing on the device)
Code:
[2012-11-27 20:57:40 - HelloWidget] ------------------------------
[2012-11-27 20:57:40 - HelloWidget] Android Launch!
[2012-11-27 20:57:40 - HelloWidget] adb is running normally.
[2012-11-27 20:57:40 - HelloWidget] No Launcher activity found!
[2012-11-27 20:57:40 - HelloWidget] The launch will only sync the application package on the device!
[2012-11-27 20:57:40 - HelloWidget] Performing sync
[2012-11-27 20:57:40 - HelloWidget] Automatic Target Mode: using device 'xxxxxx'
[2012-11-27 20:57:40 - HelloWidget] Uploading HelloWidget.apk onto device 'xxxxxxx'
[2012-11-27 20:57:40 - HelloWidget] Installing HelloWidget.apk...
[2012-11-27 20:57:46 - HelloWidget] Success!
[2012-11-27 20:57:46 - HelloWidget] \HelloWidget\bin\HelloWidget.apk installed on device
[2012-11-27 20:57:46 - HelloWidget] Done!
EDIT2: And these messages, if running on AVD
Code:
[2012-11-27 21:29:22 - HelloWidget] ------------------------------
[2012-11-27 21:29:22 - HelloWidget] Android Launch!
[2012-11-27 21:29:22 - HelloWidget] adb is running normally.
[2012-11-27 21:29:22 - HelloWidget] No Launcher activity found!
[2012-11-27 21:29:22 - HelloWidget] The launch will only sync the application package on the device!
[2012-11-27 21:29:22 - HelloWidget] Performing sync
[2012-11-27 21:29:22 - HelloWidget] Automatic Target Mode: launching new emulator with compatible AVD 'Google'
[2012-11-27 21:29:22 - HelloWidget] Launching a new emulator with Virtual Device 'Google'
[2012-11-27 21:29:33 - HelloWidget] New emulator found: emulator-5554
[2012-11-27 21:29:33 - HelloWidget] Waiting for HOME ('android.process.acore') to be launched...
[2012-11-27 21:30:36 - HelloWidget] HOME is up on device 'emulator-5554'
[2012-11-27 21:30:36 - HelloWidget] Uploading HelloWidget.apk onto device 'emulator-5554'
[2012-11-27 21:30:36 - HelloWidget] Installing HelloWidget.apk...
[2012-11-27 21:31:35 - HelloWidget] Success!
[2012-11-27 21:31:36 - HelloWidget] \HelloWidget\bin\HelloWidget.apk installed on device
[2012-11-27 21:31:36 - HelloWidget] Done!
Most probably you'll find the widget running on your Homescreen (in Emulator). But when run on device, I had to manually set the widget on Homescreen by going into widgets section on App Drawer.
Click to expand...
Click to collapse
My log looks exactly like yours. And when i check "Manage Apps" its shown there. But in the widgets tab in the app drawer there are just the standard widgets that come with android. Not the one from the tutorial.
elyts said:
My log looks exactly like yours. And when i check "Manage Apps" its shown there. But in the widgets tab in the app drawer there are just the standard widgets that come with android. Not the one from the tutorial.
Click to expand...
Click to collapse
Try uninstalling that. And then "Clean Project" in Eclipse, and then execute in emulator and see whether you see the widget in homescreen after unlocking the device, ie emulator. As the project name is "HelloWidget", you should see the name "HelloWidget" inside the Widgets tab in App Drawer. I'm not sure why its not displaying in yours. :\
coolsandie said:
Try uninstalling that. And then "Clean Project" in Eclipse, and then execute in emulator and see whether you see the widget in homescreen after unlocking the device, ie emulator. As the project name is "HelloWidget", you should see the name "HelloWidget" inside the Widgets tab in App Drawer. I'm not sure why its not displaying in yours. :\
Click to expand...
Click to collapse
I started all over again... Deleted my project and created a new one. Somehow all files like main.xml, HelloWidget.java and hello_widget_provider.xml were in the new project, although i chose a different project name. I think Eclipse was just messed up. Now everything works Thank you for the great tutorial.
elyts said:
I started all over again... Deleted my project and created a new one. Somehow all files like main.xml, HelloWidget.java and hello_widget_provider.xml were in the new project, although i chose a different project name. I think Eclipse was just messed up. Now everything works Thank you for the great tutorial.
Click to expand...
Click to collapse
Glad to know and welcome.

[GUIDE] Proxyme - Android System Access Tool

The purpose of this thread is to provide a guide for users who have Proxyme preloaded in their device's firmware and want to find out how to use it effectively. Ideally, this will be a place to share experiences and ideas to further improve the tool and provide solutions to problems that people may have.
Introduction
Proxyme ( proc-zahym ) represents a system access solution comprised of the following components:
System service - provides access to privileged system environment
SSH daemon - provides secure shell (ssh) and file (scp) access (based on dropbear)
proxyme.apk - user interface module
This solution is offered as a preloaded option in firmware images and consequently cannot (should not) be installed as a regular app, either from the Play Store or being side loaded. The reason for pre-loading stems from the requirements of the system service component to be able to integrate at system level and not be bound by operating restrictions within the Android application and framework platform environment (Zygote and Dalvik sandbox). The Play Store has been enlisted as the primary and preferred source in providing updates to the user interface component; the actual app you will be interacting with.
Proxyme offers the following functionality through its user interface:
Installation/de-installation of the su binary to provide/remove root access
(useful only for other applications which require root level access)
The persistent behaviour of the su binary can be controlled by a one-shot switch
Register/de-register tag-along scripts for su enable and disable actions
(more details on this below)
Control availability and location of busybox toolbox
Start/Stop SSH daemon
Configure listening port for the SSH daemon
Configure user accounts for the SSH daemon
Submit and execute a shell script
SU Binary
The option to enable or disable the su binary switch (on/off) in the user interface is the equivalent of rooting and unrooting the device. When enabled, you are providing root access to apps which require it to perform correctly. Currently, Proxyme does not have built-in support for monitoring and 'policing' the actual access to root.
Auto Root @ Boot
This switch in the Proxyme app allows you to indicate whether the su binary should be installed or removed during a reboot or startup of the device. Setting it to the 'on' position will make the su binary persistent throughout reboot cycles and leave your phone permanently 'rooted'.
Registering Tag-along Scripts
Whenever you enable or disable the su binary with the on/off switch in the user interface, there exists an option to execute a user script just prior to and one unique to each action. This is possible by pre-registering a script for one of or both enable/disable actions. A script can virtually perform anything and is always executed within root context. Note that you must be very cautious about the scripts you are registering and be certain about their intentions, because a rogue script could cause irreparable damage to you device.
Each script has the option to override, and thus block, the intended action (enable or disable) by setting a system property named proxyme.override to anything but blank.
One purpose of having tag-along scripts would be to 'freeze' and 'unfreeze' specific root-shy apps, which do not 'like' rooted systems. This is one area where we can share the experience of pre-coded scripts for certain target apps and I do hope it will be put to good use.
To submit a script file, tap on one of the SU Enable Script or SU Disable Script text elements to start browsing for a file.
Busybox
Busybox is just that, busybox. Options are available to determine one of two hard-configured locations where it can be installed and to enable or disable it.
More to follow later...
SSH Daemon
The SSH daemon is based on dropbear. It has been modified to support logon accounts in Android, which are configured with the following parameters:
username
password
home directory
which shell to use
user ID
group ID
For whatever reasons, you can restrict access by specifying non-root user and group (0:0) IDs. The IDs you can choose from are derived from a system list which was used and known within Android at the moment of booting the device. If you have installed new apps in the meantime and would like to use their newly assigned IDs, then please reboot the phone to update this list.
Executing Shell Scripts
The ability to submit and execute a shell script from the user interface can be considered a convenient and quick way to get some tasks done. Take note however that your scripts are run in a privileged environment under the root account and that there are risks involved. A rogue or insufficiently tested script can cause major problems if/when it makes changes to key system partitions, which are normally mounted read only for obvious reasons.
Most rom images will include a sample de-bloating script,which removes ROM specific branding apps. The script. /sdcard/Proxyme/debloat.sh, shows how this is done and could serve as a base for more extensive clean-up of firmware components, if you so desire.
Operational Notes
Whenever a device boots from a factory reset condition (i.e. after wiping data), there will be no UID/GID list available in the user management screen. The reason for this is that the SuMeD setup process will complete before the app data store, the location where aforementioned list is stored. has been initialised. Restart the device in order to make this list available.
Behind The Scenes
For details regarding how Proxyme's system service components are integrated in a firmware image, please follow this trail...
Device Support
Before taking the next step to flash your phone/device, please be aware of the risks involved with performing such an operation. Prepare the device properly, i.e. sufficient battery charge, and be well informed of the correct flashing procedure(s) for your device's make and model. On Samsung devices, rooting will probably trigger 'custom' flag(s) and consequently render the warranty void. No matter how adventurous you may feel, it is always a bad idea to try to flash a firmware image which is not intended for your device. Having said all that, note that you will be flashing your phone at your own risk. You are solely responsible for anything you do to your phone/device, so make sure you are well informed and well prepared before deciding to flash or install anything on it.
The following list will be updated as soon as new firmware images are prepared for new and old devices.
Samsung Galaxy Note 10.1 2014
SM-P600 - (reference post)
Samsung Galaxy J
SC-02F (Docomo) - (reference thread)
SGH-N075T (Taiwan) - (reference thread)
Samsung Note 3
SM-N9005 - (reference post)
SM-N900A - (reference post - unconfirmed)
Samsung Galaxy S4
SHV-E330K - (reference thread)
SHV-E330L - (reference thread)
SHV-E330S - (reference thread)
SGH-I337 - (reference post - unconfirmed)
SC-04E - (reference post)
Samsung Galaxy Grand 2
SM-G710L - (reference post)
Samsung Galaxy S3
GT-I9300 - (reference post)
SC-03E - (reference thread)
SHV-E210K - (reference thread)
SHV-E210L - (reference thread)
SHV-E210S - (reference post)
SHW-M440S - (reference post)
Samsung Galaxy S2 LTE
SHV-E110S - (reference thread)
Samsung Galaxy S2
SHW-M250K - (reference post)
Planned Changes
built-in control of su access (much like what Superuser currently does)
choice of built-in simple file browser or use intents to initiate external app(s) for browsing and selecting files
...
Proxyme - Behind The Scenes
This section details how Proxyme's system service components are integrated in a firmware image.
If you are not up to speed with how a typical Android system is constructed, then I would like to suggest you at least make yourself familiar with this topic in order to fully understand what to do with the following text.
The system service components are integrated in the /system partition (mount point) in Android. In the case of changing a live system this will require mounting the appropriate partition read/write before applying the updates. If a static firmware image is to be updated, then extract the component which represents the /system partition from the package and apply the updates before re-packing the firmware image.
The following list describes the major system service components:
hijacker - this is a module you need to write, which has the role of initiating the system service in a privileged environment.
hjprepper - this module is started by the hijacker to prepare the environment prior to starting SuMeD
SuMeD - this one is what it's all about. The Proxyme app relies on this daemon to be up and running in order to perform any of its privileged functions
SSHD - the SSH daemon is represented by an updated implementation of dropbear on Android
Hijacker
The hijacker is a program you would normally have to write to replace an existing program in your rom, which is started during the boot process by for example initd. This part of the integration process requires your (creative) input, since you need to analyse the rom you are working on and figure out how and where to position the hijacker module. If you do find an existing module to hijack, make sure to always call that original module from your hijacker once it has managed to execute the hjprepper program. In some roms it suffices to start hjprepper from a shell script, which is run with root access... they exist, you just have to look for them.
This is what your hijacker could look like in C
Code:
#define PROP_HIJACK "proxyme.hijack.system"
#define HIJACKEE "/system/bin/original-program"
#define PREPPER "/system/xbin/hjprepper"
int main( int argc, char *argv[] )
{
char *lArgv[5];
char **lArgList;
int lArgCnt;
pid_t pid;
lArgList = (char **)malloc( sizeof(void *) * (argc + 1) );
for ( lArgCnt = 0; lArgCnt < argc; lArgCnt++ )
{
lArgList[ lArgCnt ] = argv[ lArgCnt ];
}
lArgList[ lArgCnt ] = NULL;
/* Fork parent process */
pid = fork();
if ( pid < 0 )
{
property_set( PROP_HIJACK, (char *)"Hijacker Startup... spawning failed, prep first before xfer" );
system( "/system/xbin/hjprepper" );
execv( HIJACKEE, lArgv );
exit( EXIT_SUCCESS );
}
else if ( pid > 0 )
{
property_set( PROP_HIJACK, (char *)"Hijacker startup... spawned, parent ascends phase 2" );
execv( HIJACKEE, lArgv );
exit( EXIT_SUCCESS );
}
if ( execl(PREPPER, PREPPER, (char *)NULL) < 0 )
{
property_set( PROP_HIJACK, (char *)"Hijacker startup... failed to call prepper" );
}
exit( EXIT_SUCCESS );
}
hjprepper
This program is responsible for setting up an operating environment for the SuMeD daemon. If you have full control over a rom's boot image, then include a call in your init process to start this module once during boot. If not, then use a hijacker program or look for existing and suitable scripts to initiate hjprepper.
hjprepper starts the SuMeD daemon once it completes the setup and configuration procedure.
SuMeD
This bad boy is responsible for the user requested actions through interaction with the Proxyme app.
Prebuilt Packages
To get you started, there are pre-built modules available,which you can download here. Currently, availability is limited to Android 4.3 and 4.4.2 only. The following zip archives are organized in a folder tree structure,which serves as a guide for where to place the modules within the /system path.
4.3 Prebuilts
4.4.2 Prebuilts
Filler 2
Filler 2
Filler 3
Filler 3
Please add support in latest SHV-E110S 4.1.2 rom(s)
Title says/asks it all...
Can You guide build pre-rooted rom by proxyme? Thank you very much.
linhbs said:
Can You guide build pre-rooted rom by proxyme? Thank you very much.
Click to expand...
Click to collapse
Behind The Scenes section has been added to the OP.
Can this method be used to prebuilts S3, S4, Note3 not Korea? Thanks so much.
linhbs said:
Can this method be used to prebuilts S3, S4, Note3 not Korea? Thanks so much.
Click to expand...
Click to collapse
Yes. You need to figure out how to get the SuMeD daemon started and that depends on the rom you want to integrate it in. The Behind The Scenes post highlights what areas to focus on when doing this.
Note that the first post includes 2 firmware images (both Android 4.3 and 4.4.2) for the international Note3 (SM-N9005). It's a no-brainer to copy the files from the appropriate directories to an equivalent and same level version firmware for another region of the same device.
Please add support N900A 4.4.2. Thank you very much.
linhbs said:
Please add support N900A 4.4.2. Thank you very much.
Click to expand...
Click to collapse
Has 4.4.2 been released on that device? If yes, a download link for the official stock firmware will help speed up the process. If not, then we wait or you could send a PM to davidcsv with the 10 or 11 digit s/n and he will monitor and download the latest release as soon as it becomes available...after that your new firmware image will be uploaded within a day.
Link: http://www.androidfilehost.com/?fid=23321874045862490. Thank you for your interest!
linhbs said:
Link: http://www.androidfilehost.com/?fid=23321874045862490. Thank you for your interest!
Click to expand...
Click to collapse
N900AUCECMLG (preloaded with Proxyme) (2014-01-04)
This rom implicitly performs a factory reset, so backup your data before flashing it. Unpack the zip archive and specify the resulting .tar.md5 filename in the PDA/AP section of the latest version of Odin.
Use Proxyme to execute the /sdcard/Proxyme/debloat.sh script to get rid of the k n o x messages.
mega.co.nz
torrent, mirror
Apparently, this firmware image is a pre-release/leaked image and not the final deal. It includes an updated bootloader and related components, meaning that it will not be straightforward to revert back to an older version of the firmware. If you encounter problems with this Proxyme preloaded image, then I'd suggest flashing the image from the original download link.
All feedback is welcome and will be appreciated. Enjoy!
Thank you very much. I ask you to add proxyme in I337 4.4.2 rom. Thank you very much.
Link: http://www.androidfilehost.com/?fid=23329332407566813
linhbs said:
Thank you very much. I ask you to add proxyme in I337 4.4.2 rom. Thank you very much.
Link: http://www.androidfilehost.com/?fid=23329332407566813
Click to expand...
Click to collapse
I337UCUFMLD (preloaded with Proxyme) (2014-01-02)
This rom implicitly performs a factory reset, so backup your data before flashing it. Unpack the zip archive and specify the resulting .tar.md5 filename in the PDA/AP section of the latest version of Odin.
Use Proxyme to execute the /sdcard/Proxyme/debloat.sh script to get rid of the k n o x messages.
mega.co.nz
torrent, mirror
Apparently, this firmware image is also a pre-release/leaked image and not the final deal. It too includes an updated bootloader and related components, meaning that it will not be straightforward to revert back to an older version of the firmware. If you encounter problems with this Proxyme preloaded image, then I'd suggest flashing the image from the original download link. A Google search shows that this image does have a few minor issues, so beware.
All feedback is welcome and will be appreciated. Enjoy!
Thank so much. I find the phone test. Will respond to you.
SC-04E Stock Firmware Proxyme Rooter images
Root Ready Stock Images
(Unfortunately, flashing these ROMs will trigger KNOX)
Kitkat 4.4
SC04EOMUFNI3 (Proxyme) (Build Date 2014-09-19)
This zip archive contains an Odin flashable file. It is not the complete stock image, so you MUST have OMUFNI3 already running on your phone or you will need to download it from the above reference sites, which carry complete stock firmware images, and flash it before continuing with this file. Instructions are included in the zip archive.
uploaded.net
mediafire
torrent, mirror2
I337:
- Before flash rom: I337UCUEMK2 version 4.3
- After flash rom I337UCUFMLD (preloaded with Proxyme) fail.
Good.
linhbs said:
I337:
- Before flash rom: I337UCUEMK2 version 4.3
- After flash rom I337UCUFMLD (preloaded with Proxyme) fail.
Click to expand...
Click to collapse
Please post the complete log from the message box in Odin. One more question, is your phone 16GB or 32GB model?
update: and also try again with newer version of Odin v3.09 instead of v3.07

[DEV] AndroidCtrl.dll [7.1.46.0] (ADB/Fastboot/(apk/zip) Signer - Framework)

This (C# .NET 4.6|4.7|4.8) dll is a kind of ADB/Fastboot/(apk/zip) Signer - Framework, it provides a lot of predefined .NET functions to communicate with an Android device. It's designed to work in 1st case with any non-root device but you can also use it with any rooted device (A few functions requires root access).
License
This project is licensed under the Apache License Version 2.0.
The latest build 7.1.46.0 is currently only via FTP, GoogleDrive or Dropbox available, the DevDB has currently some upload issues!
The following (N)amespaces, (C)lasses & (I)nterfaces are currently available:
(N) ADB
(N) Binary (This is the binary/exe implementation of ADB)
(C) ADB (static Management Class for the ADBClient's)
(C) ADBClient (Implementation of IADBClient)
(C) Channel (Implementation of IChannel)
(N) Device
(N) BusyBox
(C) BusyBox
(C) Find
(C) Tar
(N) Dumpsys
(C) Battery
(C) Dumpsys
(I) IBattery
(N) Input
(I) IKeyEvent
(C) Input
(C) InputExtensions
(C) KeyEvent (Implementation of IKeyEvent)
(N) IO
(NS) Compression
(NS) BrotliSharp (Only available in .NET 4.6|4.7|4.8 - In .NET Standard >= 2.1 you have to use the native .NET implementation)
(C) ADirectoryInfo (Similar to .NET Directory/-Info)
(C) AFileInfo (Similar to .NET File/-Info)
(C) AFileStream (Similar to .NET FileStream)
(C) AFileSystemInfo (Similar to .NET FileSystemInfo, it's the abstract base for ADirectoryInfo & AFileInfo)
(C) AMountPointInfo (Similar to ADirectoryInfo & AFileInfo but only for mounts)
(C) FileSystemCache (A cache object for ADirectoryInfo & AFileInfo)
(I) IFileSystemCache (Interface for FileSystemCache)
(C) IO
(I) ITransferMessage
(C) MediaScanner (Manage the Android MediaScanner, useful after some file-transfers via ADB)
(C) Mount (Requires Root and manage the mounts)
(C) Stat (stat class for the ADB-Protocol)
(C) SyncStream (Base implementation of the ADB sync service. Utilized by AFileStream)
(C) TransferMessage
(C) UPath (Similar to .Net Path but for unix paths)
(N) Logcat
(I) ILogEntry
(C) Logcat
(C) LogEntry
(N) Manager
(C) ActivityManager
(I) IInstrumentation
(C) Instrumentation
(I) IPackage
(I) IPermission
(C) Manager
(C) Package
(C) PackageManager
(C) Permission
(N) Provider
(C) Contacts (Contacts provider)
(C) ContactsDataField
(C) ContactsEmail
(C) ContactsEvent
(C) ContactsGroup
(C) ContactsIdentity
(C) ContactsIM
(C) ContactsName
(C) ContactsNickname
(C) ContactsNote
(C) ContactsOrganization
(C) ContactsPhone
(C) ContactsPhoto
(C) ContactsPostalAddress
(C) ContactsRelation
(C) ContactsSipAddress
(C) ContactsWebsite
(I) IContactsDataField
(C) Provider
(C) Telephony (Telephony provider)
(N) Screen
(C) Framebuffer (Implementation of IFramebuffer)
(C) FramebufferInfo
(I) IFramebuffer (Interface of an RAW framebuffer)
(I) IFramebufferInfo
(I) IScreenDimension
(I) IScreenFocus
(C) Screen
(C) ScreenDimension
(C) ScreenFocus
(N) Shell
(I) IShell (Interface of an shell with in-/output abilities)
(C) Shell (Implementation of IShell)
(N) SQLite
(C) Options
(C) QueryTools
(C) SQLite3 (SQLite3 database connector)
(C) BuildProperties
(C) Daemon (Manage the daemon on the device)
(C) Device
(C) Forensics (ALFA-State)
(I) IUptime
(C) OpenRecoveryScript (Manage the OpenRecoveryScript)
(C) Phone (Start a call, dial a number, add a contact or send a sms)
(C) Su
(C) Uptime
(C) Wipe
(N) Shares
(C) Monitor (Implementation of IMonitor)
(N) Socket (This is the IP based implementation of ADB - Here is NO binary/exe required)
(C) ADB (static Management Class for the ADBClient's)
(C) ADBClient (Implementation of IADBClient)
(C) ADBSocket (IP based connector - Mimics the ADB-Server)
(C) Channel (Implementation of IChannel)
(C) ADBridge (Unified access to Binary.ADB and Socket.ADB)
(I) IADBClient (Interface for nearly all ADB commands)
(I) IChannel (Interface of an RAW data channel)
(N) Fastboot
(C) Backdoor (Some backdoor commands)
(C) Fastboot (static Management Class for the FastbootClient's)
(C) FastbootClient (Includes nearly all fastboot.exe commands)
(I) IFastbootClient (Interface for FastbootClient)
(C) Monitor (Implementation of IMonitor)
(C) OEM (Some OEM commands)
(C) Wipe
(N) ProcessModels
(C) General (Includes some predefined process models)
(I) IRealTimeBG (Interface of an background process with in-/output abilities)
(C) RealTimeBGExeV2 (Implementation of IRealTimeBG)
(N) Signer
(C) Signer (signapk.jar Interface)
(N) Tools
(C) CRC
(C) Deploy (Deploy the AAPT/ADB/Fastboot/Signer files needed by this dll)
(C) Hash
(C) Hex
(C) IMEI (Some helper to verify and rebuild a valid IMEI)
(C) ToolBox
(C) Cleanup (Delete the files/folders which were created by this dll)
(C) Config
(C) DeviceInfo (Basic device info, the return from "(Binary/Socket).ADB.Devices()" and "Fastboot.Devices()")
(I) IDeviceInfo (Interface for DeviceInfo)
(I) IMonitor (Interface for the ADB.Binary, ADB.Socket and Fastboot.Fastboot monitor)
Special
Ready-To-Go MVVM's for WPF, XAML via my AndroidCtrlUI.dll
Multi-Device compatible, you can manage unlimited devices at the same time with this dll. Each device gets it's own instance. (Thread-Safe, the dll use lock() for critical sections)
UTF8-File/Folder Transfer you can transfer files/folders with containing special chars (ü, ö, ä, €, @, à, è, etc.)
On-the-fly Device to Device copy (Binary <-> Binary | Binary <-> Socket | Socket <-> Socket)
Device-Monitor, if activated, it will check every 10 sec. ADB & Fastboot for new connected devices and call an defined callback, if something changed. So your program get's an info if an device is connected or removed.
All Android key-events as (int)enum and the ability to send them as single or stack.
Hint
You can use all ADB methods/commands via USB or W-Lan/Lan, if your Rom supports ADB via W-Lan/Lan (Settings/Developer Settings)
If you want to use all sub-classes of IADBClient with BusyBox instead of the Shell, you have to set IADBClient.UseBusyBox to true. This will tell the instance to use the BusyBox commands inside each method, if the device has BusyBox installed.
Referenced .NET assembly's
System
System.Numerics
System.XML
Used Code-analysis rules:
Basic & Advanced Microsoft-Rules for Accuracy
Microsoft-managed minimum & recommended rules
Microsoft Security Rules
About the usage, the namespaces (ADB, Fastboot, Signer) have one basic instance. For example, ADB.Instance(), Fastboot.Instance(), Signer.Instance. As you can see ADB.Instance() and Fastboot.Instance() can have a parameter. This parameter is in both cases an (string) DeviceID, an IDeviceInfo or null, if you use for example null, both classes will return it's Selected client. If you use the DeviceID or the IDeviceInfo the return is a fresh instance of the client or the already created instance. So, in any case, before you call ADB/Fastboot.Instance(). Check with ADB/Fastboot.Devices() if you have a connected device. If so, use the IDeviceInfo object to start your device instance or simply pass the serial to the Instance(). All instances which you have created on this way, will be hold inside an Dictionary<string, ADBClient>, so you can configure each device instance to it's needs and call it when ever you need it. This is also the point where i say it's multi-device and multi-thread safe. Because, if you always use ADB/Fastboot.Instance() you can't reach the wrong device. Also, all classes using lock() for critical sections, because [MethodImpl(MethodImplOptions.Synchronized)] is not longer available under .NET Standard.
If you have any wishes like new features, how-to's or something else, let me know! :cyclops:
Tested OS
Win Vista | 7 | 8 | 8.1 | 10 (32Bit/64Bit in VM-Ware)
Win 7 | 8 | 8.1 | 10 (64Bit Native)
Win XP is not longer supported by ADB! (But, if you have a old ADB binary, the dll will do it's job)
Tested Devices
Android Emulator some Versions (min. 2.x) in AVD
Android x86
HTC Sensation -/ XE (non-/rooted)
HTC One M9 (non-/rooted)
Huawei P9 Lite (VNS-L21,22,23,31,etc.) (non-/rooted)
Huawei P10 Lite (WAS-LX1A,etc.) (non-/rooted)
Samsung Galaxy 2-5 (non-/rooted)
Samsung Galaxy S Plus (non-rooted)
A few Samsung Tabs (non-/rooted)
Google Pixel 4 (Android 11) (non-/rooted)
Requirements
Android: min. 2.x
Platform: x86/x64 (Windows)
Frameworks: min. .NET 4.6 and JRE (only for the Signer)
(Installed ADB/Fastboot device driver)
Download
Mirror: XDA-DevDB (since 29.01.2019 no uploads possible)
Mirror #1: My FTP (Build archiv)
Mirror #2: GoogleDrive
Mirror #3: Dropbox
Each zip-archiv contains the AndroidCtrl.dll, its markup file AndroidCtrl.xml and the program debug database AndroidCtrl.pdb for .NET 4.6|4.7|4.8 and .NET Standard 2.1 (beta)
Examples (Updated to dll version 7.1.46.0) (Updated in the next 24 h)
Mirror: My FTP
Mirror #1: GoogleDrive
Mirror #2: Dropbox
(Contains a simple exe and its source written in C# WPF)
Source
N/A (If you want to have a look at it, send me a PM or simply decompile it.)
DO NOT MIRROR MY FILES! DO NOT COPY MY THREADS!
XDA:DevDB Information
AndroidCtrl.dll, Tool/Utility for the Android General
Contributors
k1ll3r8e, squabbi, Krystanos
Version Information
Status: Stable
Current Stable Version: 7.1.46.0
Stable Release Date: 2020-09-19
Created 2016-07-24
Last Updated 2020-09-19
How - To
0. Complete How-To
1. Getting Started (General)
2. Config & Deploy
3. Individual Call (ADB/Fastboot/Signer)
4. Start/Stop (ADB/Fastboot)
5. Reboot (ADB/Fastboot)
6. DeviceConnectionMonitor
7. Device state check
8. Send KeyEvents (ADB)
Problems & Solutions
1. Windows 8.x | 10.x
NOTE
If u use any callback functions, u have to invoke any UI-/ variable-interaction from an dispatcher like the following example:
Code:
public void Monitor(Added|Changed|Removed)EventHandler(object sender, Monitor(Added|Changed|Removed)EventArgs e)
{
App.Current.Dispatcher.Invoke((Action)delegate
{
// IDeviceInfo[] e.Devices
// Here u can interact with an UI-Element or an variable in ur program code
});
}
if u do it without dispatcher, u'll get an "Thread Exception".
More examples coming soon...
(If u need a specific example, just let me know, i'll try my best to provide one.)
Changelog
DD.MM.YYYY | (A) = Added | (C) = Changed | (D) = Deleted | (F) = Fixed | (R) = Recoded | (U) Updated
----------------------------------------------------------------------------------------------------------------------------------------------------
26.07.2020 [7.0.46.0]
(A) Some new Async overloads to the AFileInfo, AFileSystemInfo, ADirectoryInfo and AMountpointInfo.
(F) A few little bugs
01.02.2020 [6.7.46.0]
(A) ADB.IADBClient{} (The old IADB interface)
(A) ADB.Binary.ADB{} (The old ADB class - only the statics)
(A) ADB.Binary.ADBClient{} (The old ADB class - without any statics)
(A) ADB.Socket.ADB{} (The old ADB class - only the statics)
(A) ADB.Socket.ADBClient{} (The old ADB class - without any statics)
(A) ADB.Device.ADirectoryInfo{}
(A) ADB.Device.AFileInfo{}
(A) ADB.Device.AFileStream{}
(A) ADB.Device.AMountPointInfo{}
(A) ADB.Device.FileSystemCache{}
(A) ADB.Device.IFileSystemCache{}
(D) ADB.Device.Directories{}
(D) ADB.Device.Files{}
(D) ADB.Device.FileSystem{}
(D) ADB.Device.FileSystemItem{}
(D) ADB.Device.IFileSystemItem{}
And everything related to those classes... Directories has been replaced with ADirectoryInfo, Files has been replaced with AFileInfo and FileSystem has been replaced with AMountPointInfo.
31.05.2019 [6.0.46.0]
(C) The Framework Version from 4.0 to 4.6
(C) The versioning:
6 = Major
0 = Minor
46 = Framework Version (4.6)
0 = Hotfix
(A) (int) ADB.Instance().Device.Screen.GetAutoBrightness()
(A) (int) ADB.Instance().Device.Screen.GetBrightness()
(A) (ScreenBrightnessMode) ADB.Instance().Device.Screen.GetBrightnessMode()
(A) (ScreenRotation) ADB.Instance().Device.Screen.GetRotation()
(A) (ScreenRotationMode) ADB.Instance().Device.Screen.GetRotationMode()
(A) (bool) ADB.Instance().Device.Screen.SetBrightness(int brightness)
(A) (bool) ADB.Instance().Device.Screen.SetBrightnessMode(ScreenBrightnessMode mode)
(A) (bool) ADB.Instance().Device.Screen.SetRotation(ScreenRotation rotation)
(A) (bool) ADB.Instance().Device.Screen.SetRotationMode(ScreenRotationMode mode)
(D) ASDK (enum)
(C From) (ASDK) ADB.Instance().Device.GetSDK()
(C To) (int) ADB.Instance().Device. GetSDK()
10.04.2019 [0.0.5.2]
(A) A workaround for older SU binaries
Code:
// (Source ADB.Device.Su {})
///<summary>
/// Enables an (W)ork(A)round for older SU binaries, which needs the command as an single argument.
///<para/>For example, the latest SU binaries support a syntax like [su -c id -u] where older binaries need [su -c "id -u"]
///<para/>If u deactivate this workaround by enabled <see cref="IADB.UseSu"/>, <see cref="IADB.UseSu"/> gets also disabled!
///<para/>This workaround is by default disabled
///<para/>Affected Methods:
///<para/><see cref="ShellCmd(string, int)"/>, <see cref="ShellCmd(string, CancellationToken, int)"/>, <see cref="ShellCmd(string, ShellDataEventHandler, int)"/>, <see cref="ShellCmd(string, ShellDataEventHandler, CancellationToken, int)"/>
///<para/><see cref="ShellCmdHRes(string, int)"/>, <see cref="ShellCmdHRes(string, CancellationToken, int)"/>, <see cref="ShellCmdHRes(string, ShellDataEventHandler, int)"/>, <see cref="ShellCmdHRes(string, ShellDataEventHandler, CancellationToken, int)"/>
///</summary>
public bool WA_SingleArgument
(A) A fix for unresponsive interactive shells. This happened to me on Lineage on my HTC Sensation, where the device sends an "resize" request... Sending a command in this state caused the command getting cut at the 1st byte, for example, u send "id -u" the delivered command was "d -u".
(A) Added "feature" detection for Binary.ADB, now u can get the "features" of the device like: cmd, stat, stat_v2, shell, shell_v2, etc. in the "IChannel.Features".
(R) Removed the last bit of code duplication and optimized some internal logic's. For example, the "Socket.IChannel" got a speed boost from ~1.920.000 bytes during an transfer of 14.400.000 bytes.
06.03.2019 [0.0.5.1]
(C) ADB.Device structure (see 1st post)
(R) ADB.Device.Provider (Decreased the loading time of the contacts and their data)
(D) AAPT completely
Older Changes:
16.02.2019 [0.0.4.2]
(A) DNS lookup for ADB.Socket
(R) Reduced code duplication
07.02.2019 [0.0.4.1]
(F) An issue inside the ADB.Binary, the problem was that "ADB.Devices()" returned nothing, if more than one device was connected. Reason for the issue was the "(int)IChannel.ReadHexLength()" function, there i read an Int16 but it was an UInt16 which caused an overflow.
29.01.2019 [0.0.4.0]
(U) AAPT, ADB, Fastboot binaries and the required dlls to the latest version (1.0.40)
(A) ADB.ADBridge - Unified access to ADB.Binary and ADB.Socket
(A) ADB.IADB - Interface for ADB-/Socket with nearly all ADB commands
(A) ADB.IChannel - Interface of an ADB-/Socket RAW-data channel
(A) ADB.IFramebuffer - Interface for the ADB-/Socket framebuffer
(A) ADB.IShell - Interface for the ADB-/Socket Shell v1 & v2
(A) IMonitor - Interface for the ADB-/Socket and Fastboot device-monitor
(A) On-the-fly device to device copy (ADB.Binary <-> ADB.Binary | ADB.Binary <-> ADB.Socket | ADB.Socket <-> ADB.Socket)
Reordered the ADB namespace... The old layout was:
ADB - Binary based ADB
ADB.Device - Device helper
ADBSocket - Socket based ADB
The new layout is:
ADB - Main ADB
ADB.Binary - Binary based ADB
ADB.Device - Device helper
ADB.Shared - Shared helper, extensions for ADB.Binary and ADB.Socket
ADB.Socket - Socket based ADB
Implemented the framebuffer for ADB.Binary and ADB.Socket (A ready-to-go Remote-Desktop is available via my AndroidCtrlUI.dll)
09.04.2018 [0.0.3.1]
This is a complete new version!
-
I added a lot of new stuff like the "CancellationToken" overload, the "MediaScanner" class and also some fine tunes to the "Screen" class, there u can now also get the Screen dimensions. Also a lot models like the old MemDumpxxx_4xx have been removed (we are now 4 versions higher and the outputs are not longer available or have changed to much).
15.02.2018 [0.0.2.5]
(F) A problem where a NULL exception was raised during directory parsing
(F) A few UI freezes and applied a few tweaks to some logic's.
(D) Tools.Icons {}
(D) Tools.TrayNotify {}
Reason for this is the upcoming compatibility to .NET Core. BUT, the functions are not lost, i added those not .NET Core compatible calls to the AndroidCtrlUI.dll... Because the UI dll will be never migrated to .NET Core.
03.11.2017 [0.0.2.4]
Nearly full new build
-
Sadly my notes are lost, based on a data loss on my Dev Environment...
Showcase
ADB-Overlay made by me
The XDA-Thread and Download can be found here
P10 Lite Toolkit made by me
The XDA-Thread and Download can be found here
P9 Lite Toolkit made by me
The XDA-Thread and Download can be found here
HTC One Toolkit from our Member @squabbi
The XDA-Thread and Download can be found here
--
U use this dll in ur project?
Send me a PM with:
Project Name
Small image
Short description
Download link
then i'll link it here.
An interesting library, time to change Droid Manager code base to use this one ^__^
Thanks for your hard work :highfive:
Could you put an example of how to use the adb and fastboot commands?
such as adb reboot
and fastboot reboot
squabbi said:
Could you put an example of how to use the adb and fastboot commands?
such as adb reboot
and fastboot reboot
Click to expand...
Click to collapse
Yup i'll do it right now
#EDIT:
Added:
Start/Stop ADB/Fastboot
Check if ADB/Fastboot is running
Device Reboot ADB/Fastboot
Sending KeyEvents ADB
Hey another question. How would I use for example:
Code:
Fastboot.Instance().OEM.ReadCid();
I would presume there would need to be a 'string' for it to save to.
Code:
private string _cid
??
EDIT: So i deciced to try this:
Code:
MessageBox.Show("cid: " + Fastboot.Instance().OEM.ReadCid());
When I press the button it shows:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Thanks!
squabbi said:
Hey another question. How would I use for example:
Code:
Fastboot.Instance().OEM.ReadCid();
I would presume there would need to be a 'string' for it to save to.
Code:
private string _cid
??
EDIT: So i deciced to try this:
Code:
MessageBox.Show("cid: " + Fastboot.Instance().OEM.ReadCid());
When I press the button it shows:
Thanks!
Click to expand...
Click to collapse
Hey there
Methods/functions like "ReadCid()" returns a "List<string>" so u can do like:
Code:
string cid = string.Join(" ", Fastboot.Instance().OEM.ReadCid().ToArray());
// or
// The return are 3 lines, so we need to get the 2cnd
string cid = Fastboot.Instance().OEM.ReadCid()[1];
NOTE
I return there a "List<string> (the raw output)" coz i dun know if the output will be the same on each device.
In this case u have filter the right line ur self
Hope this helps
k1ll3r8e said:
Hey there
Methods/functions like "ReadCid()" returns a "List<string>" so u can do like:
Code:
string cid = string.Join(" ", Fastboot.Instance().OEM.ReadCid().ToArray());
// or
// The return are 3 lines, so we need to get the 2cnd
string cid = Fastboot.Instance().OEM.ReadCid()[1];
NOTE
I return there a "List<string> (the raw output)" coz i dun know if the output will be the same on each device.
In this case u have filter the right line ur self
Hope this helps
Click to expand...
Click to collapse
Thanks again!
It worked perfectly! Another question. I'm now using a textbox to show the output like this:
Code:
MainWindow mainWin = (MainWindow)App.Current.MainWindow;
mainWin.tBOutput.AppendText(String.Join("", "\n", Fastboot.Instance().OEM.ReadCid()[1]));
mainWin.tBOutput.ScrollToEnd();
How can I do this but in a seperate window? Like one that is seperate from the MainWindow.
Thanks! :good:
squabbi said:
Thanks again!
It worked perfectly! Another question. I'm now using a textbox to show the output like this:
Code:
MainWindow mainWin = (MainWindow)App.Current.MainWindow;
mainWin.tBOutput.AppendText(String.Join("", "\n", Fastboot.Instance().OEM.ReadCid()[1]));
mainWin.tBOutput.ScrollToEnd();
How can I do this but in a seperate window? Like one that is seperate from the MainWindow.
Thanks! :good:
Click to expand...
Click to collapse
Hey there
There are 3 and more options how u can handle this...
1. Simple "MessageBox"
Code:
MessageBox.Show(string.Join("\n", Fastboot.Instance().OEM.ReadCid().ToArray()));
2. Extra Window
XAML
Code:
<Window x:Class="Multi_Explorer.viewmodel.android.fastboottools.htc.CidDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Show CID" Height="410" Width="300" ResizeMode="NoResize" WindowStartupLocation="CenterScreen">
<Grid>
<RichTextBox x:Name="TokenOutput" IsReadOnly="True" ScrollViewer.VerticalScrollBarVisibility="Auto">
<RichTextBox.Resources>
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0,0,0,0"/>
</Style>
</RichTextBox.Resources>
<FlowDocument>
</FlowDocument>
</RichTextBox>
</Grid>
</Window>
CS
Code:
using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Documents;
namespace Multi_Explorer.viewmodel.android.fastboottools.htc
{
/// <summary>
/// Interaktionslogik für CidDialog.xaml
/// </summary>
public partial class CidDialog : Window
{
#region Instance
private static CidDialog _instance = null;
public static CidDialog Instance
{
get
{
if (_instance != null)
{
return _instance;
}
else
{
_instance = new CidDialog();
return _instance;
}
}
}
#endregion
public CidDialog()
{
InitializeComponent();
this.Closing += WindowClosing;
App.Current.ShutdownMode = ShutdownMode.OnMainWindowClose;
}
#region WindowClosing
///<summary>
/// Clean exit
///</summary>
private void WindowClosing(object sender, System.ComponentModel.CancelEventArgs e)
{
_instance = null;
}
#endregion
#region Add
public void Add(List<string> msg)
{
foreach (string tmp in msg)
{
TokenOutput.Document.Blocks.Add(new Paragraph(new Run(tmp)));
}
TokenOutput.ScrollToEnd();
}
#endregion
#region Clear
public void Clear()
{
TokenOutput.Document.Blocks.Clear();
}
#endregion
}
}
Usage
Code:
CidDialog ciddiag = CidDialog.Instance;
ciddiag.Add(Fastboot.Instance().OEM.ReadCid());
// As window
ciddiag.Show();
// As dialog window (this will freeze the complete application until it's closed)
ciddiag.ShowDialog();
3. Extra Window with ADB/Fastboot instance
XAML
Code:
<Window x:Class="Multi_Explorer.viewmodel.android.fastboottools.htc.CidDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Show CID" Height="410" Width="300" ResizeMode="NoResize" WindowStartupLocation="CenterScreen">
<Grid>
<RichTextBox x:Name="TokenOutput" IsReadOnly="True" ScrollViewer.VerticalScrollBarVisibility="Auto">
<RichTextBox.Resources>
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0,0,0,0"/>
</Style>
</RichTextBox.Resources>
<FlowDocument>
</FlowDocument>
</RichTextBox>
</Grid>
</Window>
CS
Code:
using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Documents;
using AndroidCtrl;
using AndroidCtrl.ADB;
using AndroidCtrl.Tools;
using AndroidCtrl.Fastboot;
namespace Multi_Explorer.viewmodel.android.fastboottools.htc
{
/// <summary>
/// Interaktionslogik für CidDialog.xaml
/// </summary>
public partial class CidDialog : Window
{
public CidDialog()
{
InitializeComponent();
this.Closing += WindowClosing;
App.Current.ShutdownMode = ShutdownMode.OnMainWindowClose;
// If u have a selected device this will work in all sub-windows
Add(Fastboot.Instance().OEM.ReadCid());
}
#region WindowClosing
///<summary>
/// Clean exit
///</summary>
private void WindowClosing(object sender, System.ComponentModel.CancelEventArgs e)
{
_instance = null;
}
#endregion
#region Add
public void Add(List<string> msg)
{
foreach (string tmp in msg)
{
TokenOutput.Document.Blocks.Add(new Paragraph(new Run(tmp)));
}
TokenOutput.ScrollToEnd();
}
#endregion
#region Clear
public void Clear()
{
TokenOutput.Document.Blocks.Clear();
}
#endregion
}
}
Usage
Code:
CidDialog ciddiag = CidDialog.Instance;
// Optional
// ciddiag.Add(Fastboot.Instance().OEM.ReadCid());
// As window
ciddiag.Show();
// As dialog window (this will freeze the complete application until it's closed)
ciddiag.ShowDialog();
k1ll3r8e said:
Hey there
There are 3 and more options how u can handle this...
Click to expand...
Click to collapse
Thanks for clarifying! What if i want to get the identifier code? it has multiple strings? how can i choose to show all of them?
EDIT: (More questions! )
Is it possible to use:
Code:
foreach (DataModelDevicesItem device in adbDevices)
{
App.Current.Dispatcher.Invoke((Action)delegate
{
// here goes the add command ;)
deviceselector.Items.Add(device);
});
}
foreach (DataModelDevicesItem device in fastbootDevices)
{
App.Current.Dispatcher.Invoke((Action)delegate
{
deviceselector.Items.Add(device);
});
}
to check if the device is in fastboot or adb? e.g
I press a button to flash recovery. i can have my phone in adb or fastboot and it will check to see which it is in. Then it wil lcarry out a specific command?
Hey there
squabbi said:
Thanks for clarifying! What if i want to get the identifier code? it has multiple strings? how can i choose to show all of them?
Click to expand...
Click to collapse
If u mean the HTC-Bootloader unlock code, u can use the described 2 or 3.
(Both window examples have an "foreach loop" to print out each line from the List<string> into the RichTextBox)
If u want also replace the "(bootloader) " tag u can use this line:
Code:
TokenOutput.Document.Blocks.Add(new Paragraph(new Run(tmp.Replace("(bootloader) ", ""))));
just replace it in the CS code with the one in the "foreach loop".
squabbi said:
EDIT: (More questions! )
Is it possible to use:
Code:
foreach (DataModelDevicesItem device in adbDevices)
{
App.Current.Dispatcher.Invoke((Action)delegate
{
// here goes the add command ;)
deviceselector.Items.Add(device);
});
}
foreach (DataModelDevicesItem device in fastbootDevices)
{
App.Current.Dispatcher.Invoke((Action)delegate
{
deviceselector.Items.Add(device);
});
}
to check if the device is in fastboot or adb? e.g
Click to expand...
Click to collapse
Yes, so i do it in my projects also.
squabbi said:
I press a button to flash recovery. i can have my phone in adb or fastboot and it will check to see which it is in. Then it wil lcarry out a specific command?
Click to expand...
Click to collapse
For this scenario, u need a function which checks which state have the current device serial. After u have the state ADB or Fastboot, u can call 2 different methods from my dll:
ADB
Code:
// This requires Root in any case!
ADB.Instance().Device.FlashImage(IDDevicePartition partition, string localPath, bool tmpToSD = true, int timeOut = -1);
Fastboot
Code:
Fastboot.Instance().Flash(IDDevicePartition partition, string file, int timeOut = -1);
NOTE
I will build a function which will do the work in the future, next release will include it.
#EDIT:
Release it out
Code:
AndroidCtrl.Tools.General.CheckDeviceState(string deviceID);
// return is a IDDeviceState
Hope this helps
k1ll3r8e said:
Hey there
If u mean the HTC-Bootloader unlock code, u can use the described 2 or 3.
(Both window examples have an "foreach loop" to print out each line from the List<string> into the RichTextBox)
If u want also replace the "(bootloader) " tag u can use this line:
Code:
TokenOutput.Document.Blocks.Add(new Paragraph(new Run(tmp.Replace("(bootloader) ", ""))));
just replace it in the CS code with the one in the "foreach loop".
Yes, so i do it in my projects also.
For this scenario, u need a function which checks which state have the current device serial. After u have the state ADB or Fastboot, u can call 2 different methods from my dll:
ADB
Code:
// This requires Root in any case!
ADB.Instance().Device.FlashImage(IDDevicePartition partition, string localPath, bool tmpToSD = true, int timeOut = -1);
Fastboot
Code:
Fastboot.Instance().Flash(IDDevicePartition partition, string file, int timeOut = -1);
NOTE
I will build a function which will do the work in the future, next release will include it.
#EDIT:
Release it out
Code:
AndroidCtrl.Tools.General.CheckDeviceState(string deviceID);
// return is a IDDeviceState
Hope this helps
Click to expand...
Click to collapse
Hey there!
Im using this for the output:
Code:
IDDeviceState state = General.CheckDeviceState(ADB.Instance().DeviceID);
if (state == IDDeviceState.DEVICE)
{
ADB.Instance().Reboot(IDBoot.BOOTLOADER);
CidDialog ciddiag = CidDialog.Instance;
ciddiag.Add(Fastboot.Instance().OEM.GetIdentifierToken());
ciddiag.Show();
}
else if (state == IDDeviceState.FASTBOOT)
{
CidDialog ciddiag = CidDialog.Instance;
ciddiag.Add(Fastboot.Instance().OEM.GetIdentifierToken());
ciddiag.Show();
}
When I first press the button the output window shows. When I close it and press the button again it gives me this error - even if I wait a couple of seconds.
Thanks for your help! :fingers-crossed::good:
squabbi said:
Hey there!
Im using this for the output:
Code:
IDDeviceState state = General.CheckDeviceState(ADB.Instance().DeviceID);
if (state == IDDeviceState.DEVICE)
{
ADB.Instance().Reboot(IDBoot.BOOTLOADER);
CidDialog ciddiag = CidDialog.Instance;
ciddiag.Add(Fastboot.Instance().OEM.GetIdentifierToken());
ciddiag.Show();
}
else if (state == IDDeviceState.FASTBOOT)
{
CidDialog ciddiag = CidDialog.Instance;
ciddiag.Add(Fastboot.Instance().OEM.GetIdentifierToken());
ciddiag.Show();
}
When I first press the button the output window shows. When I close it and press the button again it gives me this error - even if I wait a couple of seconds.
Thanks for your help! :fingers-crossed::good:
Click to expand...
Click to collapse
Hey there
oh yes, that is my fault
U have to add this to ur Window constructor "CidDialog(){}"
Code:
this.Closing += WindowClosing;
And this is the "WindowClosing method"
Code:
#region WindowClosing
///<summary>
/// Clean exit
///</summary>
private void WindowClosing(object sender, System.ComponentModel.CancelEventArgs e)
{
_instance = null;
}
#endregion
Explain
"CidDialog.Instance" create a new instance of the window. But on close the instance will not be set to null. So u can't open it again, coz the system think it's still open.
Hope this helps
#EDIT:
I updated the examples 2 and 3 also.
k1ll3r8e said:
Hey there
oh yes, that is my fault
U have to add this to ur Window constructor "CidDialog(){}"
Code:
this.Closing += WindowClosing;
And this is the "WindowClosing method"
Code:
#region WindowClosing
///<summary>
/// Clean exit
///</summary>
private void WindowClosing(object sender, System.ComponentModel.CancelEventArgs e)
{
_instance = null;
}
#endregion
Explain
"CidDialog.Instance" create a new instance of the window. But on close the instance will not be set to null. So u can't open it again, coz the system think it's still open.
Hope this helps
#EDIT:
I updated the examples 2 and 3 also.
Click to expand...
Click to collapse
Thanks a lot man! Time to put everything in full motion! ?
Sent from my HTC One_M8 using Tapatalk
squabbi said:
Thanks a lot man! Time to put everything in full motion! ?
Sent from my HTC One_M8 using Tapatalk
Click to expand...
Click to collapse
Np dude
Good Luck!
Hey there! I may be over looking, but where can I use the 'fastboot boot image.img' command?
Thanks!
squabbi said:
Hey there! I may be over looking, but where can I use the 'fastboot boot image.img' command?
Thanks!
Click to expand...
Click to collapse
Hey bro,
I dun implemented it sry... Next build will include it.
Upload starts tonight
Sent from my HTC Sensation using XDA Free mobile app

Howto: Android 11 @ Freeradius on Fedora29 Server

Hey there,
a view days ago I 'll had installed the Lineage OS 18.1 in to an tablet Samsung SM-T555.
All works fine an the consume of the battery is good, thanks without G-Apps. My elementary problem is:
I have access pointers an these are connected with my server, for authenticity I'll used freeradius on fedora server.
With the Android 10 ( Lineage 17.1 ) I 'm able to log in to my wifi network. I'm typing the username, password and no certificating the certificates.
In the Android 11 ( Lineage 18.1 ), there is an grade different, the system will be or must be have type an Domain for log into the wifi network with radius.
Can I change on the easy way the configuration on the Android 11? Or I will have to change the server configuration on the radius?
The problem is, this a lot of work for me, because, the documentation for this theme is not so good or bad. And takes a lot of time for me.
Has anybody an good idea, for solving this problem?
Greetings tiptel170
1. create certs:
/etc/raddb/certs/
ca.cnf, client.cnf, inner-server.cnf and server.cnf must be adapted according to your own system specifications.
In the files *.cnf at communName must be entered a FQDN, except in the ca.cnf, server.cnf, inner-server.cnf and client.cnf must be entered in each case another name,
but this must be resolvable with the server.
Execute
Code:
./bootstrap
2. /etc/raddb/radius.conf adjust the file paths
Code:
prefix = /usr
exec_prefix = /usr
sysconfdir = /etc
localstatedir = /var
sbindir = /usr/sbin
logdir = ${localstatedir}/log/radius
raddbdir = ${sysconfdir}/raddb
radacctdir = ${logdir}/radacct
#
# name of the running server. See also the "-n" command-line option.
name = radiusd
# Location of config and logfiles.
confdir = ${raddbdir}
modconfdir = ${confdir}/mods-config
certdir = ${confdir}/certs
cadir = ${confdir}/certs
run_dir = ${localstatedir}/run/${name}
db_dir = ${localstatedir}/lib/radiusd
3. /etc/raddb/mods-available/eap comment out these lines and paste the password from /etc/raddb/certs/ca.cnf into this file.
Code:
eaþ {
....
pwd {
group = 19
server_id = servername.domain.home
fragment_size = 1020
virtual_server = "inner-tunnel"
}
tls-config tls-common {
...
private_key_password = whatyouwant
private_key_file = ${certdir}/server.key
certificate_file = ${certdir}/server.pem
ca_file = ${cadir}/ca.pem
dh_file = ${certdir}/dh
random_file = /dev/urandom
ca_path = ${cadir}
tls_min_version = "1.0"
tls_max_version = "1.3"
...
}
/etc/raddb/mods-available/ntlm_auth
Code:
exec ntlm_auth {
wait = yes
program = "/usr/bin/ntlm_auth --request-nt-key --domain=SMB01 --username=%{mschap:User-Name} --password=%{User-Password}"
}
** --domain=SMB01 -> change accordingly
4. change permissions to allow the Radius server to read the pipe file.
Code:
usermod -a -G root radiusd
chown root:root /var/lib/samba/winbindd_privileged/
5. in the /etc/raddb.bck/mods-available/mschap add these lines.
mschap {
Code:
....
require_encryption = yes
require_strong = yes
with_ntdomain_hack = yes
ntlm_auth = "/usr/bin/ntlm_auth --request-nt-key --username=%{mschap:User-Name:-None} --domain=%{%{mschap:NT-Domain}:-SMB01} --challenge=%{mschap:Challenge:-00} --nt-response=%{mschap:NT-Response:-00}
winbind_domain = "%{mschap:NT-Domain}"
.....
}
** }:-SMB01} -> modify accordingly.
6. /etc/raddb/sites-available/default
Code:
authenticate {
...
ntlm_auth
...
}
7. /etc/raddb/sites-available/inner-tunnel and default
Code:
authenticate {
...
ntlm_auth
Auth-type LDAP {
ldap
}
...
}
8. /etc/raddb/sites-available/ldap
Code:
ldap {
server = '192.168.0.1' }
base_filter = "(objectclass=posixAccount)"
base_dn = 'ou=myserver,dc=home,dc=net'
identity = 'cn=manager,dc=home,dc=net
password = Secret
...
}
9. it is very important that the user has been stored in the ldap database as a unix user and also as a windows user and so has the password, otherwise the ntlm authentication will not work!
Create new:
Code:
smbldap-useradd -am [username]
smbldap-passwd -su [username]
Change:
Code:
smbldap-usermod -a [username]
smbldap-passwd -su [username]
Settings for Android clients 9, 10 and 11 (Lineage OS)
1. install the certificates:
- Transfer the certificates client.pem, client.p12, client.csr, ca.der, ca.key and ca.pem to the tablet or phone.
- Settings -> Wireless networks -> Advanced WLAN settings -> Advanced -> Select Install certificates.
-> Select the file client.p12 and enter the password from the client.cnf, in the pulldown menu - Wifi - select, then a long number and letter combination appears in the name field, this then
change this to a meaningful name.
-> Afterwards select the ca.pem and assign a name.
2. select the WLan where the tablet / cell phone should log in.
- First delete the old connection of the WLan to avoid possible errors.
- Method EAP: PEAP, Login for phase 2: MSCHAPV2, CA Certificate: ( here from step 1, select the name from the ca.pem file ), Online Certificate Status: Not validate, Domain ( from the server.cnf, commonName )
enter the server name ( FQD ), it must be resolvable in the network,
- Identity: username - the one stored in the central user database.
- Anonymous identity, remain here in this case free - do not enter anything.
- Password: is clear, from the user database.
3. save or connect antipen, then the mobile device should be able to log in to the WLan.
Important for Android 11: The ca.pem file, will be deleted after the 3 failed attempt from the system again, then you have to import the ca.pem again into the system!
Check:
radtest user password 192.168.0.1 1812 pwd from the clients.conf
radtest -t mschap user password 192.168.0.1 1812 pwd from the clients.conf
ntlm_auth --request-nt-key --domain=MYDOMAIN --username=user --password=password
tiptel170 said:
Hey there,
a view days ago I 'll had installed the Lineage OS 18.1 in to an tablet Samsung SM-T555.
All works fine an the consume of the battery is good, thanks without G-Apps. My elementary problem is:
I have access pointers an these are connected with my server, for authenticity I'll used freeradius on fedora server.
With the Android 10 ( Lineage 17.1 ) I 'm able to log in to my wifi network. I'm typing the username, password and no certificating the certificates.
In the Android 11 ( Lineage 18.1 ), there is an grade different, the system will be or must be have type an Domain for log into the wifi network with radius.
Can I change on the easy way the configuration on the Android 11? Or I will have to change the server configuration on the radius?
The problem is, this a lot of work for me, because, the documentation for this theme is not so good or bad. And takes a lot of time for me.
Has anybody an good idea, for solving this problem?
Greetings tiptel170
Click to expand...
Click to collapse
tiptel170 said:
Hey there,
a view days ago I 'll had installed the Lineage OS 18.1 in to an tablet Samsung SM-T555.
All works fine an the consume of the battery is good, thanks without G-Apps. My elementary problem is:
I have access pointers an these are connected with my server, for authenticity I'll used freeradius on fedora server.
With the Android 10 ( Lineage 17.1 ) I 'm able to log in to my wifi network. I'm typing the username, password and no certificating the certificates.
In the Android 11 ( Lineage 18.1 ), there is an grade different, the system will be or must be have type an Domain for log into the wifi network with radius.
Can I change on the easy way the configuration on the Android 11? Or I will have to change the server configuration on the radius?
The problem is, this a lot of work for me, because, the documentation for this theme is not so good or bad. And takes a lot of time for me.
Has anybody an good idea, for solving this problem?
Greetings tiptel170
Click to expand...
Click to collapse
Hello, I am looking for a stable Rom for my Sm-t555. Can you tell me how you got a custom rom on your tablet? I can't find anything unfortunately.

How To Guide How to un-freeze an unresponsive Samsung Galaxy A32 5G with reboot, reset, factory reset, odin mode, download mode, android recovery mode & debug mode

Recently I had to replace my Samsung Galaxy A32 5G under warranty (losing all my sdcard0 data) because my previous unrooted free T-Mobile A32-5G was frozen, so what I want to do for the future is document, in words, the exact steps to copy data off and to unfreeze & reload new firmware onto the unrooted T-Mobile SM6U I have, for me in the future (if needed) and for others (if they need it).
For the hardware modes below, I'm heavily borrowing from this YouTube video titled
Samsung a32 5g Hard Reboot - Download Mode​
But I'm doing all the steps myself and writing them up step by step so they are extremely clear to anyone (and I'm adding information).
Wake
Click power button to wake the phone (assume this fails)
Shutdown or Restart
Hold both volume down & power button to shutdown/restart (assume this fails)
Fastboot Mode
Connect the A32-5G to the Windows PC via USB
C:\> adb devices
C:\> adb reboot-bootloader
In red, "fastboot mode... " shows up on the phone
You can now run fastboot commands, such as:
C:\> fastboot flashing unlock
Debug Mode (mandatory)
Settings > About phone > Software information > Build number (press 7 times)
This enables Developer mode (if you don't already have it enabled)
Settings > Developer options > USB debugging = on
Settings > Developer options > Disable adb authorization timeout = on (otherwise authorization is revoked in 1 to 7 days)
Settings > Developer options > Default USB configuration = Transferring files
Settings > Developer options > Stay awake = off (but know this exists to turn it on if your screen becomes cracked)
Debug Mode (optional)
Settings > Developer options > Wireless debugging = on
Settings > Developer options > Quick settings developer tiles > Wireless debugging = on (that adds a brand new tile to your pulldown area)
Permanently add that new "Wireless debugging" tile to the front of your swipe-down quick tiles since this button goes off whenever Wi-Fi is turned off
Android Recovery Mode
Hold both volume down & power until the screen cycles past the poweroff/restart screen to a black screen and then hold both volume up & power until the phone cycles past the "Secured by Knox" screen and keep holding until you see Android Recovery mode which has the following options, selectable by your volume button and executed when you press the power button with any selection below highlighted.
The screen will be black with orange writings saying "Android Recovery Mode" and the following options...
Reboot system now
Reboot to bootloader
Apply update from ADB
Apply update from SD card
Wipe data/factory reset
Wipe cache partition
Mount /system
View recovery logs
Run graphics test
Run locale test
Power off
Repair apps
Recovery mode (using the PC)
C:\> adb devices
C:\> adb reboot recovery
That will put your phone into recovery mode
Download mode (aka Odin mode)
With the phone turned off, press & hold the volume up & volume down & power buttons and plug in a USB cable from the PC at the same time as you're pressing the three buttons to put the phone into Download Mode (also known as Odin Mode).
The screen will turn light blue saying...
Warning A custom OS can cause critical problems in phone and installed applications.
If you want to download a custom OS, press the volume up key.
Otherwise press the volume down key to cancel
Volume up = Continue
Volume down = Cancel (reset phone)
Side key = Show Barcode {IMEI, SN, Device ID}
In summary, my last A32-5G was toast because I didn't know to access it from the computer with USB debugging on, nor did I know how to reload the firmware, so I don't want that ignorance to happen to me or to anyone else moving forward - which is why this thread is created so we can all pitch in.
What we need to add to this are the steps to access an A32-5G phone to mirror it over USB using FOSS scrcpy tools when the screen is unresponsive, or at least to copy the data off the sdcard0 but that will be only for those who already had the foresight to set USB debugging on permanently.
1. First let's outline all the ways to get the Galaxy A32-5G into debug mode, odin mode, download mode, factory reset mode, android recover mode, etc. - all of which I tried today.
2. Then let's run through a firmware recovery process using Odin & Samfw - which I have never done so I rely heavily on others.
Note the "official" ODIN is here for flashing stock firmware.
3. Then let's recover Samsung firmware again, this time using Odin & Frija - which I have never done but I will try soon.
4. Then let's cover how to mirror your screen over USB (and later, over Wi-Fi) - which I do all the time.
5. And then let's cover how to mount the Android file system
(both sd cards) over Wi-Fi as Windows drive letters using WebDAV - which I do all the time.
6. Then let's add a section on how to recover your old adb authentication keys if they have expired so that you can again trust the computer.
Linux = ~/.android/{adbkey,adbkey.pub,adb_known_hosts.pb}
Windows = C:\Users\you\.android\{adbkey,adbkey.pub,adb_known_hosts.pb}
macOS = ?
Android: /data/misc/adb/adb_keys
7. I don't know if the A32-5G SM6U can be rooted yet, but if it
can be rooted, I'll likely add a section on how to root it after that.
This is required reading to understand the terminology, all of which is new to me (and likely to those of you who read this).
And this is required reading for the OEM Unlock option.
--
If you've enjoyed it or it has helped you, a thumbs or or thanks is always appreciated! Feel free to share and link to this thread for newbies to messing with Android devices like I am.
Here is how to download firmware using SAMFW & how to flash with Odin. (make sure you get the right odin!)
The assumption is the first post was followed which is to proactively:
1. Turn USB debugging = on
2. Connect by USB cable once to a trusted PC & save the authentication
3. Turn off the automatic release of those authentication keys
4. Set the default USB mode = file transfer
Click to expand...
Click to collapse
WARNING: Everything below is a work in progress for the step-by-step tested procedure to download the firmware for the T-Mobile USA Samsung Galaxy A32 5G using Windows 10 as shown below.
Determine the name, model, and baseband version
Settings > About phone > Model name Galaxy A32 5G, Model number SM-A326U
Settings > About phone > Software information > Baseband version = A326USQS8BVJ1
With that information, get the latest Samsung firmware
Frija is one way to download the latest Samsung firmware
But my first test was with https://samfw.com/
In the SamFW web page on Windows 10, enter the device name or model code = SM-A326U / Galaxy A32 5G
That brings you to here which has hundreds of files, many with the designation "A326USQS8BVJ1" and some for Android 12.
https://samfw.com/firmware/SM-A326U
I'm not sure which "A326USQS8BVJ1" "Android 12" file to pick next (is there any way to intelligently choose from the many that do exist)?
Most (if not all) are USA files, so I arbitrarily selected one of the "AIO" CSC (whatever that means) files and that brings up three files that are for Android 12, the latest being:
Build Date = 20221012183750
Download the firmware flash for Samsung Galaxy A32 5G with the code is SM-A326U. This firmware for the region with CSC code is AIO (AIO - United States). Please make sure the code is correct. You can check model code in Setting - About, in Download mode or you can find it by flipping your phone or among the things you found in the box. This product PDA version is A326USQS8BVJ1 and Android version is S(Android 12). This firmware size is 5.83 GB.
This firmware is official from Samsung Cloud Server. Of course, we recommend you are using official Samsung tool like Samsung Smart Switch or Samsung Kies. Samfw.com will not responsible for any damage caused by using the files on this website
AP VERSION A326USQS8BVJ1
CSC VERSION A326UOYN8BVJ1
ANDROID VERSION S(Android 12)
BIT (BINARY/U/SW REV.) 8
SIZE 5.83 GB Full Files
MD5 9019690daf609d85d21bbf6eccebb9b8
Click to expand...
Click to collapse
That process of creating the firmware took me an hour and perhaps a bit more as it automatically generated a "A326U_AIO_A326USQS8BVJ1_fac.zip" file of 5.83GB size which I then had to manually download when it was finally 100% finished, creating.
Name: Samfw.com_SM-A326U_AIO_A326USQS8BVJ1_fac.zip
Size: 6259616116 bytes (5969 MiB)
SHA256: 89B5CF61033173BAFABBF7E7980F7FE1F8F43D88AD99C82729A4643884E5045B
Can someone advise me as to what's the next step?
OK. This seems to be the next set of steps.
1. Extract (unzip) that Samsung firmware zip archive.
Application Processor (or PDA)
AP_A326USQS8BVJ1_CL24355525_QB57258298_REV00_user_low_ship_MULTI_CERT_meta_OS12.tar.md5 (6,331,637,961)
Bootloader
BL_A326USQS8BVJ1_CL24355525_QB57258298_REV00_user_low_ship_MULTI_CERT.tar.md5 (2,959,548)
Core Processor
CP_A326USQS8BVJ1_CP23036338_CL24355525_QB57258298_REV00_user_low_ship_MULTI_CERT.tar.md5 (41,666,760)
Consumer Software Customization
CSC_OYN_A326UOYN8BVJ1_CL24355525_QB57258298_REV00_user_low_ship_MULTI_CERT.tar.md5 (86,405,314)
HOME_CSC_OYN_A326UOYN8BVJ1_CL24355525_QB57258298_REV00_user_low_ship_MULTI_CERT.tar.md5 (86,384,839)
USERDATA_AIO_A326USQS8BVJ1_CL24355525_QB57258298_REV00_user_low_ship_MULTI_CERT.tar.md5 (887,490,760)
_FirmwareInfo_Samfw.com.txt (719)
Note that nowadays, the CSC contains the Partition Information Table file (PIT) in most cases, but you might have a PIT file if not.
Also note the difference between the CSC and the HOME_CSC where you can only burn one, not both.
CSC = Updates the firmware using the PIT which means it wipes the device entirely and reformats the super partition containing everything from /boot, /system and /vendor
HOME CSC = updates the firmware but without the PIT file so that it does NOT wipe the device
2. Download the Windows Samsung Odin Tool 3.13.1
Name: Odin3_v3.13.1_3B_Patched_Samfw.com.rar
Size: 1080120 bytes (1054 KiB)
SHA256: 796DBCD0A2262228AF0492B69BCFF0555CDC9AFE422045BC295BB2ABF74FF107
3. Extract that Odin RAR file (I used 7zip).
Name: Odin3 v3.13.1_3B_Patched_Samfw.com.exe
Size: 3172864 bytes (3098 KiB)
SHA256: 1E84628BD5EF44EB6A00954A7DE5445375C953879F889EF82CB73DB0358CEEAF
4. Run that unpacked executable file on Windows with its associated ini file in the same directory to make sure it brings up the Odin GUI which makes no sense to a noob like me. (Need to add more here since this is a critical step in the process which has no good instructions yet). OK. I think I got it. See Odin file upload steps below.
5. Put the Samsung A32-5G into "Download Mode" by holding volume up, volume down, and power and then right away plug in the USB cable from the computer port such that all four are done simultaneously.
Immediately this puts the phone screen blue which is apparently Download Mode (aka Odin Mode) which will say...
Warning A custom OS can cause critical problems in phone and installed applications.
If you want to download a custom OS, press the volume up key.
Otherwise press the volume down key to cancel
Volume up = Continue
Volume down = Cancel (reset phone)
Side key = Show Barcode {IMEI, SN, Device ID}
6. In the Odin tool on Windows 10, you have two use models, the first of which is to add the five BL, AP, CP, CSC, and USERDATA files separately, or together as one HOME_CSC file.
I don't know where to load the HOME_CSC file so I'll load the five BL, AP, CP, CSC & USERDATA files separately into the Windows Odin GUI (the CSC and HOME_CSC being different in that the home version is said to not wipe user data).
In Windows Odin, click the BL button and navigate to the file named BL_A326USQS8BVJ1_CL24355525_QB57258298_REV00_user_low_ship_MULTI_CERT.tar.md5 file.
In Windows Odin, click the AP button and navigate to the file named AP_A326USQS8BVJ1_CL24355525_QB57258298_REV00_user_low_ship_MULTI_CERT_meta_OS12.tar.md5 (notice this will take a while as this is the largest file).
In Windows Odin, click the CP button and navigate to the file named CP_A326USQS8BVJ1_CP23036338_CL24355525_QB57258298_REV00_user_low_ship_MULTI_CERT.tar.md5
In Windows Odin, click the CSC button and navigate to the file named HOME_CSC_OYN_A326UOYN8BVJ1_CL24355525_QB57258298_REV00_user_low_ship_MULTI_CERT.tar.md5 or CSC_OYN_A326UOYN8BVJ1_CL24355525_QB57258298_REV00_user_low_ship_MULTI_CERT.tar.md5 (the difference is said to be the HOME version doesn't wipe user data clean).
In Windows Odin, click the USERDATA button and navigate to the file named USERDATA_AIO_A326USQS8BVJ1_CL24355525_QB57258298_REV00_user_low_ship_MULTI_CERT.tar.md5 where the "home_csc" is said to not wipe userdata but the "csc" will wipe user data.
7. Make sure re-partition is NOT ticked in the Windows 10 Odin GUI "Options" tab which has the following settings by default
[x] Auto Reboot
[_] Nand Erase
[_] Re-Partition
[x] F. Reset Time
[_] DeviceInfo (mine is grayed out)
[_] Flash Lock
8. In the Windows 10 Odin GUI, with the phone connected to the Windows 10 PC in blue Download Mode (aka Odin Mode), now click the Odin GUI START button to begin reflashing.
Please improve if/when you test this out as I only ran up to the last steps but I did not actually install the firmware.
Here (will be) how to download firmware using Frija & flash with Odin.
[Frija is the wife of Odin in Norse Mythology.]
WARNING: Everything below is a work in progress for the step-by-step tested procedure to download the firmware for the T-Mobile USA Samsung Galaxy A32 5G using Windows 10 as shown below.
This is a work in progress... to be updated as I test it and document the steps.
Please improve if/when you test this out as I only ran up to the last steps but I did not actually install the firmware.
Here is how to mirror the phone on the desktop over USB or over Wi-Fi using the FOSS scrcpy software.
1. Read the FOSS scrcpy readme explanatory file.
[https://github.com/Genymobile/scrcpy#readme]
The two fundamental steps are
C:\> adb devices
(That should report the adb-name-of-your-android-device.)
C:\> scrcpy -s adb-name-of-your-android-device
(That should mirror your phone onto the PC over USB or Wi-Fi.)
2. Download both the adb & scrcpy commands from this zip file.
[https://github.com/Genymobile/scrcpy]
Note that you can use any adb from anywhere so if you already have adb from Android Studio, then use that if you want to.
3. Turn on USB Debugging & default mode is file transfer.
4. Connect your Galaxy A32-5G to the PC over the USB cable.
The notifications should say "USB for file transfer".
5. For this test, I purposefully turned off Wi-Fi on the phone so that the connection would only be via USB cable.
6. If necessary install Windows drivers to ensure the phone shows up as "Galaxy A32 5G" on the Windows network.
6. Run the adb daemon and obtain your device name over USB.
C:\> adb devices
You should see something like:
ABCD##ABCDE device
x. Run scrcpy to mirror the device onto your Windows 10 PC.
C:\> scrcpy -s ABCD##ABCDE
Where the "1ABCD##ABCDE" is the unique name as reported by adb but if you only had one device connected to the adb daemon, you don't even need that '-s' option; yet it's a good habit to use it.
At this point all the following work seamlessly together
Your PC will show what's on your phone screen.
Your PC mouse will manipulate your phone screen.
Your PC keyboard will type into your phone screen.
Your PC & Android clipboards will be interchangeable.\
Here are some useful things you can do with scrcpy.
To take a movie of the entire session (on either USB or over Wi-Fi):
C:\> scrcpy --record foo.mp4
C:\> scrcpy -r bar.mkv
To perfectly screenshot just the phone window on demand in Windows:
C:\> Irfanview
Irfanview:Options/Capture Screenshot > (o)Foreground window - Client area
File name: capture_$U(%Y%m%d_%H%M%S)_###
(Or you can automatically capture every half second or whatever)
DETAILS:
1. Install adb on Windows as per instructions here.
<https://www.xda-developers.com/install-adb-windows-macos-linux/>
<https://dl.google.com/android/repository/platform-tools-latest-windows.zip>
<https://dl.google.com/android/repository/platform-tools_r31.0.3-windows.zip>
Note you do not need to be root on the phone nor admin on the Windows PC.
Note: You can skip this step if you ONLY want to run scrcpy as
scrcpy comes with its own adb which works fine for that purpose.
2. On the phone, check if you have Developer Mode turned on.
Settings > About phone > Software information > Build number
If you tap once & it says "Developer mode has already been turned on"
then you don't need to tap it 7 times to turn Developer Mode on.
3. On the phone, enable the USB Debugging mode option.
Settings > Developer options > USB debugging = on
4. Connect your phone via USB to the PC & run a quick test.
C:\> adb devices
On Windows you will see some debugging information:
* daemon not running; starting now at tcp:55555
* daemon started successfully
List of devices attached
ABCD##ABCDE unauthorized
On your phone’s screen, you should see a prompt to allow or deny USB Debugging access which you should grant permanently for this computer so that when the screen is broken, it will still connect!
Grant USB Debugging access when prompted (and tap the always-allow check box if you want).
Then run the command again:
C:\> adb devices
List of devices attached
ABCD##ABCDE device
5. From the PC you should now be able to access even the phone root filesystem.
Optional test:
C:\> adb pull /system/etc/hosts .\hosts.txt
[That should copy the Android hosts file over to your Windows machine.]
Find the number of packages you have which have "google" in the name.
C:\> adb shell pm list packages google | find /c /v ""
6. And from the PC, you should now be able to bring up Android Activities.
Optional teset:
Bring up the gms "Reset AD ID" Activity on Android from Windows:
C:\> adb shell am start -n com.google.android.gms/.ads.settings.AdsSettingsActivity
That should pop up the "Reset AD ID" settings page on your phone.
[GMS is a set of "google mobile services" products native on Android.]
You can close that page on Android from Windows by running this:
C:\> adb shell am force-stop com.google.android.gms
Which you can put into a "closegms.bat" one-line file for convenience.
7. Obtain the Windows "Screen Copy" code to mirror the Android screen.
<https://www.khalidalnajjar.com/take-screenshots-of-secure-conversations-on-android/>
<https://github.com/Genymobile/scrcpy>
Save to C:\installer\editor\android\scrcpy\scrcpy-win64-v1.23.zip
Name: scrcpy-win64-v1.23.zip
Size: 35446869 bytes (33 MiB)
SHA256: D2F601B1D0157FAF65153D8A093D827FD65AEC5D5842D677AC86FB2B5B7704CC
Extract to C:\app\editor\android\scrcpy
Note there is an adb.exe which comes with that zip file
You can now interact with your phone using the Windows kebyoard & mouse
11. To record a mirrored Android session as an MP4 video run this:
C:\> scrcpy --record file.mp4
C:\app\editor\android\scrcpy\scrcpy-server: 1 file pushed, 0 skipped. 1.4 MB/s (41123 bytes in 0.027s)
[server] INFO: Device: samsung SM-A326U (Android 11)
INFO: Renderer: direct3d
INFO: Initial texture: 720x1600
INFO: Recording started to mp4 file: file.mp4
Note you can press control+c to end the recording when desired.
14. If desired, use the TCP/IP Wi-Fi connection between Windows & Android which requires the USB connection first, and then you can disconnect after establishing the Wi-Fi connection.
C:\> adb connect 192.168.1.2:5555
Where 191.168.1.2 is the IP address of your phone on your LAN.
C:\> scrcpy
Or you can establish the Wi-Fi connection from the start but this always requires interacting with the screen first.
(WORK IN PROGRESS TO ADD THESE STEPS.)
I do this all the time so I just need to document it.
This is a placeholder work in progress to document the WebDAV solution which enables you to mount the entire Android file system onto Windows 10 as drive letters (one Windows drive letter for each sdcard).
I do this all the time so I just need to document it.
This is a placeholder for recovering old keys if you no longer have the computer trusted and you can no longer access the screen.
Accessing An Android Device With Broken Screen Via ADB and Unauthorized Machine in 2022
Just as a datapoint, while I use a variety of adb implementations, I looked for these stored keys and found the files, albeit they were rather old.
adb shell ls /data/misc/adb/adb_keys
Directory of C:\Users\username\.android
11/25/2022 03:39 PM <DIR> .
11/25/2022 03:39 PM <DIR> ..
12/14/2020 01:27 PM 1,732 adbkey
12/14/2020 01:27 PM 709 adbkey.pub
11/25/2022 03:39 PM 936 adb_known_hosts.pb
08/06/2022 08:16 AM 185 analytics.settings
12/16/2020 12:37 AM <DIR> avd
12/14/2020 04:57 PM <DIR> breakpad
08/06/2022 09:15 AM <DIR> cache
12/14/2020 01:26 PM 2,107 debug.keystore
12/14/2020 01:29 PM 0 debug.keystore.lock
12/16/2020 12:36 AM 4,640 emu-last-feature-flags.protobuf
12/16/2020 12:36 AM 67 emu-update-last-check.ini
12/16/2020 12:37 AM 119 maps.key
12/16/2020 12:36 AM 171 modem-nv-ram-5554
12/14/2020 12:59 PM <DIR> studio
10 File(s) 10,666 bytes
Note that I do not use the adb inside of Android Studio much, since any adb works for what I use it for, so this is probably a feature of AS perhaps?
Do you think _old_ keys would work in an emergency situation?
This is something we should flesh out for the general user.
TimmyP said:
If you have bootloader version 3 or lower (probably not anymore, 5th number from right in baseband version) look at this thread: https://forum.xda-developers.com/t/recovery-unofficial-twrp-for-galaxy-a32-5g-mediatek.4286631/
Click to expand...
Click to collapse
I really would like to try to root my T-Mobile Samsung Galaxy SM-A326U.
Unfortunately, my baseband is A326USQS8BVJ1 where the 5th character from the right is {8} (which is a lot bigger than 3).
In Android 12 Settings > About phone > Software information >
Service provider software version =
Current CSC = SAOMC_SM-A326U_OYN_TMB_12_0008TMB
Best CSC for SIM card 1 = TMB
Best CSC for SIM card 2 (if dual SIM is possible) = TMB
Factory CSC that cannot be changed = TMB
The CheckFirm Android app by Bluesion reports
SM-A326U (TMB)
Latest official firmware = A326USQS8BVJ1/A326UOYN8BVJ1/A326USQS8BVJ1
Likewise Windows Frija & BitFrost tools report similar information:
Model = SM A326U
CSC = TMB
Version = A326USQS8BVJ1/A326UOYN8BVJ1/A326USQS8BVJ1
Size = 5970 MB
OS = S(Android 12)
Filename = SM-A326U_2_20221020211950_3bw6oqi4sf_fac.zip.enc4
Windows Frija downloaded that firmware for me which resulted in:
Name: SM-A326U_2_20221020211950_3bw6oqi4sf_fac.zip
Size: 6260154041 bytes (5970 MiB)
SHA256: 04B3FE98BD303DA3F56DB166838E846C82BEC4D2659569C0BE9025764511464D
Unpacked, that resulted in the following set of SM A326U firmware.
Application Processor (or PDA)
Name: AP_A326USQS8BVJ1_CL24355525_QB57258298_REV00_user_low_ship_MULTI_CERT_meta_OS12.tar.md5
Size: 6331637961 bytes (6038 MiB)
SHA256: DD2A0B508160644462C7717B8FBBB6AC0288CA64B71E524214855395E6AA9CBD
Bootloader
Name: BL_A326USQS8BVJ1_CL24355525_QB57258298_REV00_user_low_ship_MULTI_CERT.tar.md5
Size: 2959548 bytes (2890 KiB)
SHA256: D21FEFE7A3C5F5883F0F74A9FCF05709A97CAFAAC129A255480A2BE4195A1C29
Core Processor
Name: CP_A326USQS8BVJ1_CP23036338_CL24355525_QB57258298_REV00_user_low_ship_MULTI_CERT.tar.md5
Size: 41666760 bytes (39 MiB)
SHA256: D56AD0641F4CAE6E3488CD7842DCEAE91E941091A0E392397A83B8F9ABC92632
Consumer Software Customization (with PIT)
Name: CSC_OYN_A326UOYN8BVJ1_CL24355525_QB57258298_REV00_user_low_ship_MULTI_CERT.tar.md5
Size: 86405314 bytes (82 MiB)
SHA256: 59EE866BC393D0B3E017712229BDA2F07EA17FB165609D53BE0724EB419291A7
Consumer Software Customization (w/o PIT)
Name: HOME_CSC_OYN_A326UOYN8BVJ1_CL24355525_QB57258298_REV00_user_low_ship_MULTI_CERT.tar.md5
Size: 86384839 bytes (82 MiB)
SHA256: 865A0563845EA2AB9575C5BDD350A6F07B9B145004B8385DA922CDABAD86E001
User Data (supposedly not used on newer devices)
Name: USERDATA_TMB_A326USQS8BVJ1_CL24355525_QB57258298_REV00_user_low_ship_MULTI_CERT.tar.md5
Size: 861655240 bytes (821 MiB)
SHA256: 7C03E8DA8784F14B6EEC924BF052E6EC30701B3F8FB539F344CD6106E4494FBC
I picked up Windows Frija here.
https://github.com/SlackingVeteran/frija/releases
https://github.com/SlackingVeteran/frija/releases/download/v1.4.4/Frija-v1.4.4.zip
Name: Frija-v1.4.4.zip
Size: 6533283 bytes (6380 KiB)
SHA256: 1067F48DE201E26596F473613CB2CEAC31F1A10550CE6AE352827CCE9FA23161
Unpacked:
Name: Frija.exe
Size: 3445248 bytes (3364 KiB)
SHA256: 76C6E277C9E2D167FCFCF4077D13481111C1750909CDAEFB195480609BC16516
I picked up the BitFrost from here, which does what Frija does.
https://www.ytechb.com/samsung-firmware-downloader/
https://github.com/zacharee/SamloaderKotlin/releases
https://github.com/zacharee/SamloaderKotlin/releases/download/1.0.11/Bifrost_Windows.zip
Name: Bifrost_Windows.zip
Size: 73379150 bytes (69 MiB)
SHA256: 6E8335FD91B0135F92421C54C55D1363D5B246720F492D4B120DB962E8113A40
Unpacked
Name: Bifrost.exe
Size: 462848 bytes (452 KiB)
SHA256: 9A71CF4A6F2C74F15C5C00D9BBB7BE2D68AF3E9A22111D0BAE35BD23713B66AC
Still, I'd love to be able to root this phone (if possible).
I tried the methods to root described here, the first test is
Go to OneClickRoot on any web browser
a. I clicked on "Samsung",
b. and typed the model "SM-A326U",
c. and selected "Galaxy A32 5G (SM-A326U)"
d. Then I selected "Android 12" as the Android version
e. And then pressed on "Verify Device Rootable"
f. It reported "We're Sorry"
"Your Samsung Galaxy A32 5G (SM-A326U) is not rootable."
Then I installed SuperSU on the SM-A326U but it failed.
https://download.chainfire.eu/696/supersu/
https://download.chainfire.eu/696/SuperSU/UPDATE-SuperSU-v2.46.zip
Name: UPDATE-SuperSU-v2.46.zip
Size: 4017098 bytes (3922 KiB)
SHA256: D44CDD09E99561132B2A4CD19D707F7126722A9C051DC23F065A948C7248DC4E
Name: Superuser.apk
Size: 5904943 bytes (5766 KiB)
SHA256: 624B7205B818F1A36877DA0E3575B5B671F4933DFD0FDDF31EE168583C6B2090
Then I installed KingoRoot on both the PC & the SM-A326U, but it too failed to root.
https://www.kingoapp.com/
https://d.kingoapp.com/android_root.exe
https://d.kingoapp.com/default/KingoRoot.apk
Name: android_root.exe
Size: 19128680 bytes (18 MiB)
SHA256: 2F400F0B2FE121B8E5B1415A99DFDA2F5502B7AA2E7002EF6E464F0D587DBA0F
Name: KingoRoot.apk
Size: 6615009 bytes (6459 KiB)
SHA256: E6B2EC7E8663229A0F8DD903D7704CCFDE81F7AE0B1881407E068E63A7F125B8
I've installed Magisk but I'm not sure what the next steps are.
https://f-droid.org/en/packages/com.topjohnwu.magisk/
https://en.wikipedia.org/wiki/Magisk_(software)
https://github.com/topjohnwu/Magisk
Name: Magisk-v25.2.apk
Size: 11278270 bytes (10 MiB)
SHA256: 0BDC32918B6EA502DCA769B1C7089200DA51EA1DEF170824C2812925B426D509
Yet the referenced thread (TWRP for Galaxy A32 5G) implies that we CAN root the SM-A326U where the thread clearly says the SM-A326U US model is supported and the thread even points to a bootloader unlock thread for this USA model over here (Bootloader Unlock for Samsung US/Canada Devices) so this is extremely confusing conflicting information.
This is all very very very confusing.
Either we can root this Galaxy A32-5G SMA326U or we can not root it.
Which is it?
Has anyone been successful with that TWRP/Bootloader unlock process with a bootloader fifth-from-right digit of 8?
NO FOR THE BILLIONTH TIME
TimmyP said:
March 2021 is bootloader 5. The device was rootable though that update. Anything after that no known exploit im sure the people I paid to root mine here would be "advertising" their services if there was.
Click to expand...
Click to collapse
Thanks for the confirmation that anything with a bootloader version of 6 or above (mine is 8) can't be rooted by anyone.
Settings > About phone > Software information > Baseband version = A326USQS8BVJ1
All the articles that say the Galaxy A32-5G can be rooted must have been done using the older bootloader (version 5 or lower).
How to ROOT A32 5G

Categories

Resources