Skip to content

farid1991/jjpatcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A2 Runtime Patcher (GNU Toolchain)

jjpatcher is a Java ME applet used to patch Sony Ericsson A2 firmware at runtime.

This repository builds the arm.bin payload using the GNU ARM Embedded Toolchain instead of FASMARM.

Migration Notice

This project has been migrated from:

  • ❌ FASMARM (Flat Assembler for ARM)
  • ✅ GNU arm-none-eabi toolchain

Benefits of the migration:

  • Standard ARM assembler (GNU AS syntax)
  • Cross-platform build (Linux / macOS / Windows)
  • No custom assembler build required
  • Easier maintenance and portability

Features

  • Builds arm.bin for multiple A2 firmware targets
  • Automatic chipset define selection (DB3150 / DB3210 / DB3350)
  • Automatic build directory creation
  • Automatic packaging into Patcher.jar
  • Single make builds everything
  • Small output (~5KB payload)

Prerequisites

Install the following:

  1. GNU ARM Embedded Toolchain

    Must provide:

    arm-none-eabi-gcc
    arm-none-eabi-ld
    arm-none-eabi-objcopy

    On Linux:

    sudo apt install gcc-arm-none-eabi

    On Windows:

    Install ARM GNU Toolchain and ensure it is in PATH.
    
  2. Java Development Kit (JDK) Required for:

    • Updating Patcher.jar
    • Running jar command

    Verify:

    jar --version
  3. Make (Linux/macOS)

    • On Windows:
    • Use MSYS2 / WSL / Git Bash
    • Use provided build_gcc.bat

Supported Target Devices

DB3150

  • C702_R3EF001
  • C902_R3EG004AO
  • C902_R3EG004AS
  • T700_R3EG004
  • W595_R3EF001
  • W595_R3EG004_Orange
  • W760_R3EF001
  • W760_R3EM001
  • W902_R3EG004
  • W980_R3EG004

DB3200

  • F100_R1HA035
  • J105_R1GA026_Orange
  • J105_R1HA035
  • T707_R1FA035
  • W508_R1FA035

DB3210

  • C510_R1HA035
  • C901_R1GA028
  • C903_R1GA028
  • C905_R1FA035
  • T715_R1GA026
  • T715_R1HA035
  • W705_R1GA031
  • W715_R1GA030
  • W995_R1HA035

DB3350

  • J10_R7CA061
  • J10_R7CA065
  • J20_R7CA064
  • J108_R7EA011
  • U10_R7AA071
  • U10_R7BA084
  • U100_R7AA076
  • W20_R7DA062

Build Instructions

  • Build All Targets
make
  • Build All + Package
make package
  • Clean
make clean

Windows (Batch Build)

If not using Make:

build_gcc.bat

This will:

  • Build all targets
  • Package all targets
  • Place output in build/

Output Structure

Each target directory inside build/ will contain:

build/<TARGET>/
├── arm.o
├── arm.elf
├── arm.bin
├── Patcher.jar
├── Patcher.jad
└── <TARGET>.zip

Files

  • arm.bin → Compiled ARM runtime payload
  • arm.elf → Linked ELF (for debugging)
  • Patcher.jar → jjpatcher with embedded payload
  • Patcher.jad → Java descriptor file

Technical Notes

  • CPU target: arm926ej-s
  • Link address: 0x00000000
  • Chipset selection is controlled via:
    • DDB3150
    • DDB3210
    • DDB3350

Firmware-specific configuration is injected using:

-DDEVICE_CONFIG="target/gcc/<TARGET>.S"

Notes

  • This project targets Sony Ericsson A2 platform only
  • Payload size is intentionally small (~5KB)
  • Runtime injection behavior differs slightly between early and late DB3150 revisions
  • build.bat is kept for compiling legacy FASMARM-based builds

Instalation

For more information, visit the following link:
MobileFree Forum - a2 runtime patcher

Post Install

Patch /tpa/preset/system/ams/jab3b4ded00cb34b3cc77a6699f87ac10753fa701.b created by jjpatcher using bpatch

Copyright