Docomo Phones by NEC
Check the dumping hardware overview for a list of known preservation hardware.
If you need help, please come chat with us on the Keitai World (previously Keitai Wiki) discord server.
Introduction
NEC Docomo phones generally run on a customized form of Linux. They use a bootloader related to the one used in Panasonic and Casio Docomo phones. When an NEC phone is properly connected to a debug cable, an LED somewhere on the phone will light up for approximately one second, and then turn off.
mova (downloadable appli)
| Phone Model | Extractable? | File System/FTL | Tools | |
|---|---|---|---|---|
| N503i | Unknown | |||
| N503iS | M4 | |||
| N504i | ||||
| N504iS | Partially | M4 | Keitai-Scripts (M4) | |
| N505i | Not dumpable yet | – | – | |
| N505iS | Partially | M4 | Keitai-Scripts (M4) | |
| N506i | Partially | M4 and SSR200 | For M4: Keitai-Scripts (M4) For SSR200: fs-tools (SSR200) | |
| N506iS | Partially | M4 | Keitai-Scripts (M4) |
Early FOMA
| Phone Model | Extractable? | File System/FTL | Tools |
|---|---|---|---|
| N2001 | Unknown | Unknown | Unknown |
| N2002 | Unknown | Unknown | Unknown |
| N2051 | Yes | Customized FAT16 + SSR200 | fs-tools (SSR200) |
| N2102V | Yes | Customized FAT16 + SSR200 | fs-tools (SSR200) |
| N2701 | Yes | Customized FAT16 + SSR200 | fs-tools (SSR200) |
900i/700i Series
SPECIAL NOTE FOR N902i SERIES:
The N902i series of phones (N902i, N902iS, N902iL, N902iX) have difficulty connecting to PC. If the phone does not connect properly, there are a few techniques you can try. The results are generally random as to whether these work, and you may need to try the same method multiple times before the phone will connect.
- Use a Linux computer instead of WSL (this is a MUST)
- Boot up the phone once, shut down the phone, then quickly remove the battery and plug it into the PC
- Plug the phone into the PC with the battery inside, then remove the battery
- Follow the steps above, but right after the phone light flashes once, reinsert the battery
- Use the battery in a different phone, boot up that phone, then remove the battery and use it with the phone you are trying to dump
- Cover the ground contact for the phone battery, reinsert the battery, and plug into PC
- If you don't have a battery, boot the phone with an external power supply, remove the power, and quickly plug it into the PC
If you are still having trouble after attempting these steps multiple times, you can reach out in the Keitai World discord channel for help.
| Phone Model | Extractable? | File System/FTL | Tools |
|---|---|---|---|
| N900i | Yes | Customized FAT16 + SSR200 | fs-tools (SSR200) |
| N900iS | Yes | Customized FAT16 + SSR200 | fs-tools (SSR200) |
| N900iG | Yes | Customized FAT16 + SSR200 | fs-tools (SSR200) |
| N900iL | Unknown | Unknown | Unknown |
| N700i | Yes | JFFS2 | Jefferson |
| N901iC | Yes | JFFS2 | Jefferson |
| N901iS | Yes | Samsung RFS + XSR1 | rfs_dumper.exe |
| N701i/N701iECO | Yes | Samsung RFS + XSR1 | rfs_dumper.exe |
| N902i | Yes | JFFS2 | Jefferson |
| N902iS | Yes | JFFS2 | Jefferson |
| N902iX HIGH-SPEED | Yes | JFFS2 | Jefferson |
| N902iL | Yes | JFFS2 | Jefferson |
| N702iD | Yes | Samsung RFS + XSR1 | rfs_dumper.exe |
| N702iS | Yes | Samsung RFS + XSR1 | rfs_dumper.exe |
| N903i | Yes | JFFS2 | Jefferson |
| N703iD | Yes | JFFS2 | Jefferson |
| N703iμ | Yes | JFFS2 | Jefferson |
| N904i | Yes | JFFS2 | Jefferson |
| N704iμ | Yes | JFFS2 | Jefferson |
| N905i | Yes | JFFS2 | Jefferson |
| N905iμ | Yes | JFFS2 | Jefferson |
| N705i | Yes | JFFS2 | Jefferson |
| N705iμ | Yes | JFFS2 | Jefferson |
| N906i | Yes | JFFS2 | Jefferson |
| N906iμ | Yes | JFFS2 | Jefferson |
| N906iL | Yes | JFFS2 | Jefferson |
| N706i | Yes | JFFS2 | Jefferson |
| N706ie | Yes | JFFS2 | Jefferson |
| N706iII | Yes | JFFS2 | Jefferson |
SIMPURE
| Phone Model | Extractable? | File System/FTL | Tools |
|---|---|---|---|
| N600i | Yes (with JTAG) | EFS2 | efs2dumper |
| N601i | Yes | JFFS2 | Jefferson |
Late FOMA Series
| Phone Model | Extractable? | File System/FTL | Tools |
|---|---|---|---|
| N-01A | Yes | JFFS2 | Jefferson |
| N-02A | Yes | JFFS2 | Jefferson |
| N-03A | Yes | JFFS2 | Jefferson |
| N-04A | Yes | JFFS2 | Jefferson |
| N-05A | Yes | JFFS2 | Jefferson |
| N-06A | Yes | JFFS2 | Jefferson |
| N-07A | Yes | JFFS2 | Jefferson |
| N-08A | Yes | JFFS2 | Jefferson |
| N-09A | Yes | JFFS2 | Jefferson |
| N-01B | Yes | YAFFS2 + CramFS | yaffs-tools |
| N-02B | Yes | YAFFS2 + CramFS | yaffs-tools |
| N-03B | Yes | JFFS2 | Jefferson |
| N-04B | Yes | YAFFS2 + CramFS | yaffs-tools |
| N-05B | Yes | YAFFS2 + CramFS | yaffs-tools |
| N-06B | Yes | YAFFS2 + CramFS | yaffs-tools |
| N-07B | Yes | YAFFS2 + CramFS | yaffs-tools |
| N-08B | Yes | YAFFS2 + CramFS | yaffs-tools |
| N-01C | Yes | YAFFS2 + CramFS | yaffs-tools |
| N-02C | Yes | YAFFS2 + CramFS | yaffs-tools |
| N-03C | Yes | YAFFS2 + CramFS | yaffs-tools |
| N-05C | Yes | YAFFS2 + CramFS | yaffs-tools |
| N-02D | Yes | YAFFS2 + CramFS | yaffs-tools |
| N-03D | Yes | YAFFS2 + CramFS | yaffs-tools |
| N-01E | Yes | YAFFS2 + CramFS | yaffs-tools |
| N-01F | Yes | YAFFS2 + CramFS | yaffs-tools |
| N-01G | Can dump with chip-off (not yet compatible with ktdumper) | YAFFS2 + CramFS | yaffs-tools |
Methods
Extracting Data
Reading File Systems
Ktdumper
Ktdumper is a tool for extracting data from feature phones that are compatible with the Foma debug adapter, which includes all Docomo phones and select SoftBank phones. Please note that ktdumper will not work unless you have the Foma debug adapter.
Ktdumper is compatible with Linux and WSL (Windows System on Linux). It can be used as a command line tool or as a live Linux iso with a GUI.
Ktdumper Command Line
- Make sure your phone is connected to the PC with a debug cable. If using WSL, you will need to bind your USB device. The easiest way to do this is with wsl-usb-gui.
- Download the ktdumper repository from Github
- Navigate to the main ktdumper folder, where the code will be executed.
- You can execute the following commands
- NAND (contains user data, downloads, etc.)
sudo ./ktdumper.sh [insert phone model] dump_nand
- NOR (usually default data, sometimes user data if the phone does not have nand)
sudo ./ktdumper.sh [insert phone model] dump_nor
- JAVA Folder (only works on select Mitsubishi/Fujitsu phones)
sudo ./ktdumper.sh [insert phone model] dump_java
Sample For D904i
sudo ./ktdumper.sh d904i dump_nand
Reading Data
efs2dumper
Prerequisites
- Python
- crcmod
pip install crcmod
- reedsolo
pip install reedsolo
- Download dumpefs2
- Place file dump in main folder and use the following command
dumpefs.py IN_FILE OUT_FILE.zip
Example
python .\dumpefs.py .\N600i_SKS01880_JTAG.bin output.zip
fs-tools (SSR200)
UPDATED
- Downlod the ssr200 tools from fs-tools
- Download assemble_ssr200.py from various-keitai-assemble
- Place assemble_ssr200.py in the same folder as nand.bin and nand.oob
- Use the following commands:
python3 assemble_ssr200.py nand.bin nand_remapped.bin python3 carve_nec_fat.py nand_remapped.bin fat_dir python3 convert_fat.py fat_dir converted_fat_dir
Note: If you are extracting data from a P2102V, add the “–disable-normalize” option to the 3rd command
python3 assemble_ssr200.py nand.bin nand_remapped.bin python3 carve_nec_fat.py nand_remapped.bin fat_dir python3 convert_fat.py --disable-normalize fat_dir converted_fat_dir
The partitions can now be extracted with TestDisk. Generally, games will be located in Partition 3.
Jefferson
The JFFS2 file system can be extracted with Jefferson, which runs on Python. You can install Jefferson in a pre-existing Python using pip:
sudo apt-get install python3-pip sudo pip3 install jefferson
The following command creates a folder called “jffs2_extracted” to contain the data extracted from nand.bin.
sudo jefferson -d jffs2_extracted nand.bin
If your phone uses onenand, use the following command instead:
sudo jefferson -d jffs2_extracted onenand.bin
Note: You may see the error
data_crc does not match!
The dump may still be working. Let it continue until the process is complete before trying other steps.
Helpful Extra Step: Remove root ownership of the files so they can be moved elsewhere
sudo chown -R <your_username>:<your_username> jffs2_extracted
Troubleshooting
If the jffs2_extracted folder contains no data, the offset will need to be removed from the .bin file.
You can determine the offset two ways:
- Using binwalk, look for the address where the JFFS2 file system begins.
binwalk nand.bin
- Using a hex editor such as HxD, look for the following four bytes:
85 20 19 E0
Or
85 19 02 E0
Delete all data before those four bytes and try again to extract with Jefferson.
Note: It is not possible to undelete files from a JFFS2 file system.
Keitai-Scripts (M4)
Our extraction method for the M4 file structure is currently incomplete, but our tools are sufficient for extracting apps. You will need scripts from Keitai Scripts on GitHub.
Step 1: assemble_m4.py
The assemble_m4.py will divide the regions of the nor dump
python assemble_m4.py <file name>.bin
Example
python assemble_m4.py N506i-2_PF38F4462LLYDB0-f1.bin
Step 2: convertForEmulator_m4.py
The convertForEmulator_m4.py script will extract the DoJa files from the regions inside the firmware dump.
python convertForEmulator_m4.py m4_out_dir model_name
Example
python convertForEmulator_m4.py N506i-2_PF38F4462LLYDB0-f1.bin_output N506i
rfs_dumper.exe
Current tools for extracting XSR1 require Windows.
- Download rfs_dumper_xsr1app.exe from here.
- The input file should be stripped of everything before the first 91 5A 49 2C header. In HxD, you can do this by going to the menu and selecting Search>Find, then selecting the Hex-values tab and pasting in 91 5A 49 2C. Once you find this location, delete everything before it. Save this new file as input.bin.
- Place onenand.bin, onenand.oob, and rfs_dumper.exe in one folder. Open a terminal in the folder with the dump (onenand + oob) and rfs_dumper.exe. Use the following command:
.\rfs_dumper_xsr1app.exe onenand.bin output.bin
The file system can now be read and extracted with TestDisk.
yaffs-tools
- Download the yaffs-tools repository from Github
- Look in the /config folder for the config file that matches your data based on phone model and memory type (MLC or SLC)
- Fill in the following command based on the file you are trying to extract
python extract.py <bin file> <output folder> <config>
- If the data you expect does not appear in the output folder, you can introduce the following arguments:
-d, --show-deleted, --no-show-deleted Show deleted files in DELETED subfolder. -m, --show-missing, --no-show-missing Show entries with missing parents in MISSING subfolder. -u, --try-undelete, --no-try-undelete Try to restore latest version of a file marked as deleted. -s, --mix-spare, --no-mix-spare Mix spare using filepath '[input (without extension)].oob'.
Example: N-04B MLC
python extract.py -m -u -s onenand_mlc.bin output_dir config/config_n04b_mlc.json
TestDisk Procedure
TestDisk can be used on either Windows or Linux. It is available for download here. Once you have downloaded TestDisk, use the program to open your current .bin file.
- When you open a .bin file with TestDisk, you will have the option to select a media. There should only be
>Disk <your file>
Press enter to proceed.
- When asked to select a partition table type, select None
[None ] Non partitioned media
- On the following page, press q to quit or select
[ quit ]
- In the new menu, move up the menu and select
[ Analyse ]
- Press enter to continue with
[Quick Search]
- You should now see a partition labeled with a file system like FAT16 or FAT32. Don’t press ENTER. Instead, press p to list files.
- Press a to select all files.
- Press C (note the capitalization and hold the shift button!) to copy the selected files.
- Choose the output folder. Press C when the folder is correct.
You should now have all the extracted files.
Note: For select devices (such as F905i and D905i), you need to select None → Undelete rather than the usual TestDisk procedure.