i9000: probably reviving without PIT necessary
what about the second link? no PIT there?
Anyways, I have currently three different pits:
s1_odin_20100512.pit
s1_odin_20100513.pit
s1_odin_20100803.pit
which are a bit different.
Then assuming the same size for a block like for the N7000, I get sizes of around 750 kB for factoryfs and around 370 kB for dbdatafs, which looks strange to me. Either the block size is different or the table is very curious.
Also don't you have an UMS partition (internal sd), where you can store user data?
What is the size of your internal flash memory?
I need to relate the sizes of the PIT table to the real sizes.
If possible, can you give me a log of
Code:
parted /dev/block/mmcblk0 print
please? If not possible to get from your own phone then perhaps from another phone of the same model or some listing retrieved from www.
ok, I found this myself:
Code:
NAND disk */dev/block/stl1 - stl6 omitted
device name mount point size in MB remarks
/dev/block/stl7 n/a 7.5 known as KERNEL, for holding zImage
/dev/block/stl8 n/a 7.5 known as RECOVERY, for storing a copy of zImage
/dev/block/stl9 /system 286.5 known as FACTORYFS
/dev/block/stl10 /dbdata 134 known as DBDATA
/dev/block/stl11 /cache 35 known as CACHE
/dev/block/stl12 n/a 7.5 known as MODEM, for storing modem.bin
MMC disk
device name mount point size in MB remarks
/dev/block/mmcblk0p1 /mnt/sdcard (/sdcard) ~6200 (8G) / ~14200 (16G) none
/dev/block/mmcblk0p2 /data ~2000 none
which refers to s1_odin_20100512.pit
Now I understand what's irritating me.
The i9000 has two memory devices: a small /dev/block/stl and a big /dev/block/mmcblk0, whereas the N7000 and the other devices of this thread all have only one internal memory device /dev/block/mmcblk0.
Ok...now revisiting your question about fixing access to mmcblk0:
I assume mmcblk0 is an internal sd.
If so, the PIT looks to me like only partitioning the other internal memory (stl), can you confirm this?
But how is mmcblk0 partitioned? I assume it's done via factory reset, right?
This is where you got your brick, right?
Odin can probably only flash the partitions on the stl device, right?
Assuming all this, if your brick is on mmcblk0, you cannot work around it with a PIT, because it doesn't touch your mmcblk0 but only stl.
Then your only option would be to use parted on it.
First I assume you have no brick in /data (otherwise a different scheme is needed):
Start
adb shell
and enter
parted /dev/block/mmcblk0
(choose ignore, if you get questions about not all blocks used etc.)
print (to look if you are on the correct device and get the needed values for calculation)
note the values for Start and End for the first partition as
OLDSTART and
OLDEND.
rm 1 (remove /sdcard partition [btw. you said /emmc?])
mkpartfs primary fat32
START END (create partition at different place)
The aim is to leave the bricked blocks unused.
I assume they are somewhere at the beginning of the partition, say
all bricked blocks are in the first X MB.
For this case simply use
START = X
END = OLDEND
I would start with
X = 8000MB (about half of the memory).
You can leave this adb window open and open another one for checking.
Now check the partition with
dd if=/dev/block/mmcblk0p1 of=/dev/null
This needs some (longer) time depending on the speed of the memory. Give it at least 60 min for the first try, then you'll know how long it needs for a GB, so you can optimize this time.
If this command freezes, you still have a brick in this new partition, then reboot and start a new session with a bigger X (say +1000MB).
If the command succeeds and tells you how many bytes were read, then you can decrease the X (say -1000MB).
Btw.: fastest way would be to start with a chunk size (here I chose X=8000MB which is also the first chunk size) and in each cycle increase or decrease X by half of the chunk size and then also reduce the chunk size by half for the next cycle (this is called binary searching).
Hope that helps. Otherwise tell here, what's happening.