bkerler / edl

Inofficial Qualcomm Firehose / Sahara / Streaming / Diag Tools :)
GNU General Public License v3.0
1.47k stars 354 forks source link
diag firehose qualcomm sahara streaming

Qualcomm Sahara / Firehose Attack Client / Diag Tools

(c) B. Kerler 2018-2024 Licensed under GPLv3 license.

Be aware that if you use anything from this repository in any (including) compiled form, you need to opensource your code as well !

Violating against the GPLv3 license will enforce me to stop developing these opensource tools.

Why

QC Sahara V3 additional information for newer QC devices

Use LiveDVD (everything ready to go, based on Ubuntu):

User: user, Password:user (based on Ubuntu 22.04 LTS)

Live DVD V4

Live DVD V4 Mirror

Installation

Grab files and install

git clone https://github.com/bkerler/edl
cd edl
git submodule update --init --recursive
pip3 install -r requirements.txt

Linux (Debian/Ubuntu/Mint/etc):

# Debian/Ubuntu/Mint/etc
sudo apt install adb fastboot python3-dev python3-pip liblzma-dev git
sudo apt purge modemmanager
# Fedora/CentOS/etc
sudo dnf install adb fastboot python3-devel python3-pip xz-devel git
# Arch/Manjaro/etc
sudo pacman -S android-tools python python-pip git xz
sudo pacman -R modemmanager

sudo systemctl stop ModemManager
sudo systemctl disable ModemManager
sudo apt purge ModemManager

git clone https://github.com/bkerler/edl.git
cd edl
git submodule update --init --recursive
sudo cp Drivers/51-edl.rules /etc/udev/rules.d
sudo cp Drivers/50-android.rules /etc/udev/rules.d
python3 setup.py build
sudo python3 setup.py install

If you have SELinux enabled, you may need to set it to permissive mode temporarily to prevent permission issues. SELinux is commonly used by RedHat-like distros (for example, RHEL, Fedora, and CentOS). You can set it to permissive run-time until next boot with sudo setenforce 0.

macOS:

brew install libusb git

git clone https://github.com/bkerler/edl.git
cd edl
git submodule update --init --recursive
python3 setup.py build
sudo python3 setup.py install

Windows:

Install python + git

Get latest UsbDk 64-Bit

Using serial port instead of usb

With Port autodetection

edl --serial

or Port name

edl --portname \\.\COM1

Get Loaders

You should get these automatically if you do a git submodule update --init --recursive or from here

Convert own EDL loaders for automatic usage

Install EDL loaders


Run EDL (examples)

Your device needs to have a usb pid of 0x9008 in order to make the edl tool work. If your device is semi bricked and entered the usb pid 0x900E, there are several options to get back the 0x9008 mode :

  1. Use a edl cable (Short D+ with GND) and force reboot the phone (either vol up + power pressing for more than 20 seconds or disconnect battery), works with emmc + ufs flash (this will only work if XBL/SBL isn't broken)

  2. If emmc flash is used, remove battery, short DAT0 with gnd, connect battery, then remove short.

  3. If a ufs flash is used, things are very much more complicated. You will need to open the ufs die and short the clk line on boot, some boards have special test points for that.

  4. Some devices have boot config resistors, if you find the right ones you may enforce booting to sdcard instead of flash.

Generic

For EMMC Flash

For UFS Flash

QFIL emulation (credits to LyuOnLine):

For devices with peek/poke command


For generic unlocking

Dump memory (0x900E mode)

Enter streaming mode

Sierra Wireless Modem
Netgear MR1100
ZTE MF920V, Quectel, Telit, etc.. Modem

Run Diag port tools (examples)

For Oneplus 6T, enter #801# on dialpad, set Engineer Mode and Serial to on and try :

Usage

Issues

Tested with

Published under GPLv3 license Additional license limitations: No use in commercial products without prior permit.

Enjoy !