[Q] Interfacing manually with internal MMC / internal moviNAND issue - Android Software/Hacking General [Developers Only]

Two SGS Captivates. The internal MMC (moviNAND, 16Gb) of one works, while the other doesn't.
On the defective unit, the MMC continuously responds to CMD1 (SEND_OP_COND) with the busy flag -- ie: never finishing internal initialization.
Boot logs between units shows no discernible difference (debugging enabled).
Changing kernel/bootloader/rom shows no difference. MMC never finishes internal initialization.
Questions:
1. Is there a way to manually interface with the MMC and send it commands from user mode, outside of the kernel?
2. What might cause the internal MMC to never finish its internal initialization?
3. What possible causing files/registers survive a kernel/bootloader/rom change, and can they be read/modified from user mode?
Any input is appreciated.
Thanks!
PS: Do not suggest re-partitioning, factory reset, or microwave .

Captivate uses OneNAND, not eMMC or MoviNAND.
Have you tried my i897 KB2 Heimdall One-Click with bootloader flashing enabled?
http://files.teamkomin.com/files.php?dir=Captivate/

AdamOutler said:
Captivate uses OneNAND, not eMMC or MoviNAND.
Have you tried my i897 KB2 Heimdall One-Click with bootloader flashing enabled?
http://files.teamkomin.com/files.php?dir=Captivate/
Click to expand...
Click to collapse
Hey there.
Yes, the "dysfunctional" phone is able to boot into the OS (OneNAND is fine), but its MoviNAND (internal eMMC/SD, 16Gb) stays silent/dead.
Yes, countless kernels/partition files/bootloaders/roms were tried.
The issue is that the the eMMC will never finish its internal initialization and always responds to CMD1 with the "busy flag" set, making further data requests impossible.
EDIT: I see that the SBL has something called "mmctest". How can one trigger/launch/interface with it?

Although many of the SGS 1 variants used a oneNAND of either 1GB or 512MB to house firmware information, I have found that portions of the internal storage have been segmented for CSC scripts and other various tasks the device will use. I'm working with a few developers for more access the to the EMMC zones via JTAG to determine if all of these "partition bricked" devices are actually gone for good as they have been claimed in the past and up until this point, or possibly resurrectable by overwriting valid EMMC info into the corrupt zones. The team and I already have access to full EMMC chip infrastructure on newer Galaxy S II devices and things like the Galaxy Player 5 but I'm pushing them to develop more for older devices with these problems as well for useful data recovery tactics on devices that may be not boot, but still allow access via JTAG. This would allow me to back up any part of the chip (pictures, music and videos or anything else) for advanced data recovery in scenarios when an onboard USB controller is bad, display module is bad or their is a PMIC issue.
Time will tell if this is a fixable issue but good luck to you if you can figure out a way to run a script to clean up corrupt EMMC zones!

raz123 said:
Questions:
1. Is there a way to manually interface with the MMC and send it commands from user mode, outside of the kernel?
2. What might cause the internal MMC to never finish its internal initialization?
3. What possible causing files/registers survive a kernel/bootloader/rom change, and can they be read/modified from user mode?
Click to expand...
Click to collapse
1. SBL commandline accessible through UART. Or modified SDHCI driver inside of kernel (you can find drivers in /drivers/mmc/ /arch/arm/plat-samsung /arch/arm/plat-s5p /arch/arm/s5pv210) AFAIR, you can also build kernel with enhanced MMC debugging (MMC_DEBUG / DEBUG_MMC define in config file, also some additional debug macros inside of drivers).
2. HW damage like broken soldering or damaged moviNAND chip.
3. I'm pretty certain that none.

This seems relate to my Tmobile Vibrant problem. In the recovery mode it report moviNand open fail then moviNand checksum confirmation fail
The Vibrant now has 0 internal storage space. The format command or even the *2767*3855# command have no effect. I'm running 2.2 now flash via ODIN with no internal space.

Related

"Stale NFS file handle"

Hi all
I have all my apps and data moved to the sdcard a while back but my phone crashed and I decided to move only the apps to the sdcard.
I'm trying remove the /system/sd/data folder on the sdcard and keeps getting that error message. How to fix it?
Thanks
This should only happen if an NFS export is mounted to a linux box of some sort, and that export has changed or otherwise become inaccessible.
any idea how to fix it?
i have this problem, i'm not able to delete the data folder beacause of that error. :/
your ext2 partition is corrupted. this happens quite a lot if data is moved to the sdcard. boot up linux and run fsck on the sdcard and that should fix it.
cool. I'll give that a try.
Thanks
I'm having this problem too. Can you provide some basic instructions for how to mount and fix under linux? I have an ubuntu vmware image I can boot to on my windows pc and a usb card reader. Will that suffice?
When you plug the card into an ubuntu box it should automatically mount it as the next available drive. You'll have to figure out what device node the card shows up as, unmount it (umount /dev/<insert device name here>), and then run a filesystem check (fsck /dev/<insert device name here>) on the unmounted card. The utility will report various problems about "inodes" which you will want to say yes to fix. Once it has run through the file system should be in a consistent state and ready for use again.
You run the risk of losing stuff written to the card (which is probably corrupt anyways) when you run the fsck so you may want to take a copy of the data first.
On a side note: I am not sure what the default mount options are listed for moving the stuff onto the sd card in the faqs but I suspect it may help prevent corruption to mount the card on android with the sync option. Though, this will definitely slow writes to the card. It would definitely be a bad idea to remove the card while your G1 is running either way.
equid0x said:
On a side note: I am not sure what the default mount options are listed for moving the stuff onto the sd card in the faqs but I suspect it may help prevent corruption to mount the card on android with the sync option. Though, this will definitely slow writes to the card. It would definitely be a bad idea to remove the card while your G1 is running either way.
Click to expand...
Click to collapse
I was thinking of using the sync option, but then I read this at http://linux.die.net/man/8/mount:
sync
All I/O to the file system should be done synchronously. In case of media with limited number of write cycles (e.g. some flash drives) "sync" may cause life-cycle shortening.
Click to expand...
Click to collapse
Busybox seems to have an fsck command built in, but I don't think all the supporting stuff is there. I'd like to have a way to fsck my ext2 partition while on the go and not near my linux box.
I know that you can't fsck without unmounting the partition and of course it would be bad to unmount the partition with apps on it while the phone is running, but I was thinking it would be nice to be able to boot into the recovery console.
I tried this and attempted to do a fsck on /dev/mmcblk0p2 with the fsck in busybox as follows:
Code:
busybox fsck -t ext2 /dev/mmcblk0p2
But the error I got was that fsck.ext2, which is the actual executable that should be used, isn't there.
What would it take to get this onto the system so that I could boot into recovery and do a quick fsck and then reboot back into phone mode?
I was thinking of using the sync option, but then I read this at http://linux.die.net/man/8/mount:
Click to expand...
Click to collapse
Where flash lifetime is concerned... I agree, this will certainly have some impact. However, the amount of wear concerned really depends on the number of write cycles the particular flash you are writing to can handle, and how good any wear leveling in the memory controller is. Modern flash memory will likely last on the order of years even with tons of writing going on. If all you are moving to the card are the apps, that data will likely be written once (or maybe a few times over the life of an app) and only re-read from that point forward. The caching will eventually commit any data in the buffer to "disk" regardless of how much is actually there. The idea is to line up all the writes so they can be done efficiently. Where ext3 is concerned, the commit interval is 5 seconds by default, I am not sure what it was in ext2 but I imagine it is similar. Ext2 is not really a flash optimized filesystem, but it is readily available on basically any linux distro, and is supported on Android. A better fs for flash drives where write cycles are an issue might be something like jffs2 or yaffs.
At any rate, sd cards are cheap. Why not just throw it away when it starts to die?
But the error I got was that fsck.ext2, which is the actual executable that should be used, isn't there.
What would it take to get this onto the system so that I could boot into recovery and do a quick fsck and then reboot back into phone mode?
Click to expand...
Click to collapse
You would have to compile an ARM6 compatible version of fsck and get it onto the recovery partition so you could run it.
just turn off your phone, pull out the sdcard, boot on a linux os and
then in console type :
fsck -p /dev/your_ext2_partition
Is there any way to clear this error message on a windows xp computer?
Maybe use pargon partion manager, but where do I go to fix it in pargon?
equid0x said:
Ext2 is not really a flash optimized filesystem, but it is readily available on basically any linux distro, and is supported on Android. A better fs for flash drives where write cycles are an issue might be something like jffs2 or yaffs.
Click to expand...
Click to collapse
Hmm... Well, we know that yaffs is supported on Android because that's what the onboard storage uses. So I wonder why the tutorial for apps-on-sdcard suggests creating an ext2 partition? Couldn't we create a yaffs partition on the sdcard and use that instead?
Maybe because yaffs isn't as commonly supported in non-Android partitioning tools (which you would have to use to set up the card initially)?
In any case, if there's no real downside to having the partition be yaffs, how can I go about formatting it as such? I don't recall seeing such an option on gParted or anything, but then again I didn't look that carefully.
So can anyone clue me into how I might add yaffs/yaffs2 support to my desktop linux box? I'd like to try using a yaffs2 partition rather than ext2 to see if I get better reliability, but I need to add support for that filesystem first. Can't seem to figure out how to do that quite yet...
You will likely need to create the partition from the terminal using something like fdisk or cfdisk which will allow you to select the proper filesystem ID. The command for creating the filesystem is mkyaffs. The fstab in android will need to be modified to enable mount of this file system at boot. You will need to install all of the yaffs support tools on a linux desktop to get access to the mkyaffs command.
Yaffs is designed to be used directly on NAND or NOR flash memory (not abstracted through the controller built into an SD card) but it may work anyways. I am not very familiar with the specifics of this particular FS. Most of these flash filesystems are designed to provide a bootable root filesystem for an embedded device.
Yaffs kernel support can be built into a custom kernel with the instructions here:
http://yaffs.net/howto-incorporate-yaffs
Its not likely you will find pre-made packages for any of this in a common distro like Ubuntu. So, you will need to know how to compile it all by hand. A good starting point for a lot of linux info is The Linux Documentation Project at:
http://www.tldp.org/
FWIW I have built homebrew linux based routers for dual ISPs, IPSEC VPN and the like using a lightly modified version of CentOS and 4GB CF cards plugged into an ATA adapter. I used EXT2 on these and they were in production use at a small 13 server farm for a couple of years before being replaced with newer equipment without any failures whatsoever.
I have also used CF cards in small 200Mhz cube PCs as basic web kiosks for extended periods of time without any failures as well.
Under normal usage patterns on a mobile device probably does not require a large amount of writes in the grand scheme of things. I'd say it is fairly likely that your card will outlive the device you are using it in regardless of the filesystem in use.
If you are seeing lots of corruption I would suspect a flakey/failing SD card or some other hardware related problem. It definitely pays to buy high quality flash media. I would also suggest not allowing the phone to constantly run dead if you know things are being written to the SD card, since random power failures during a write to flash can permanently damage the media.

[Q] Can't change (any) memory contents on sns

Hi!
Some time lurker but it's my first post.
I just created this post because of the 10 posts rule on dev section.
Following this thread:
http://forum.xda-developers.com/showthread.php?t=947950
My problem is:
Phone boots right, after unlocking the screen the error messages start.
Any settings changed get lost after reboot.
Can't change anything, even SD card contents
What I tried:
I can install clockwork (it's the only partition I can change)
But nothing more. Because what ever I copy from pc to SD card get lost when unmounting from pc. Not even NAndroid
With fastboot only flashing recovery works.
With others I get errors, I guess because it can't write to memory.
So I tried ODIN even with 512 .pit. Got firmware from samfirmware.com and other places
(I tried many times with different sources).
All procedure with Odin says sucessfull but when rebooting I got the previous installation unchanged.
It looks like I have a real ROM memory (in the real definition of the word) and nothing can change it. (A real unbrickable phone for ever )
I suspected first from hardware problem but if the problem was that I couldn't write to any partition, not even recovery (it's a single chip on motherboard). And if I mess up with pit and only repartitionate, the phone restarts over and over to bootloader.
If I repeat the steps again with correct files in Odin, it sucessfully reboots to the unchanged installation again. Like it never writed anything. Even the sdcard is unchanged with lot of musics ans photos.
Any ideas?
Thanks in advance
Anyone?
Anyone?
Are there any tool to format / resize change flash memory on Nexus S?
Like there are tools for HDD.
Or go to specific hardware and JTAG?
If you point me any direction it could help a lot.
Its not a single chip from my understanding. The sdcard partition is a seperare chip from the bootloader/recovery. Sounds like it could be a hardware issue. I have never heard of this exact problem though, most commonly the sdcard partition becomes unmountable
Sent from my Nexus S 4G using xda premium
Chip
I believe it's only one chip.
check step 10 on here
w_w_w.ifixit.com/Teardown/Nexus-S-Teardown/4365/2
and it's equal to my own motherboard,
Besides, the SDcard mounted on Nexus S is only ~13G , the rest is partitioned to system, boot, ...
yeah, I'm screwed
Anyone?
I'm screwed.
Anyone know where can I find motherboard to replace it?
(ebay has a lot of digitizers, flexs, etc but not motherboards)
Or maybe one to sell.
Or maybe figured out how to change NAND chip
Contact Samsung. They should repair it. Just sucks because you will be without your phone for two to three weeks.
Sent from my Nexus S 4G using xda premium

Partition error on GT-I9210T - same on I727?

As these phones are reasonably similar, I'm wondering if someone can do a quick test for me.
I appear to have discovered a nasty potential brick on the GT-I9210T phones, and I'd like to see if someone with a rooted I727 can do the same test.
Basically, the partition table on the GT-I9210T is incorrect. It says that the /mnt/sdcard partition extends beyond the end of the onboard storage.
For the geeks - http://pastebin.com/LYYB69YA
You can do a quick test by running 'parted /dev/block/mmcblock0' and then 'print'.
If it says 'Error: Can't have a partition outside the disk!' you have this problem
You can download parted from sendspace.com/file/w6hi6x
If you get that error, I used busybox from 'Terminal IDE' to do a fdisk and dump the exact partition table, and you can see that the extended partition (and, as such, the last partition) goes beyond the size of the internal storage.
This is bad, and means that if you happen to get unlucky, you could corrupt your internal filesystem. If you're EXTREMELY unlucky, it'll wrap around and start writing over the start of the internal storage - it depends on how the MMC driver is written.
So - can someone test for me please?

twpr backup from a nexus to another nexus

Hi guys,
I own a Nexus 5 16gb with purenexus 6.01 I'm buying another 32gb and to speed things up I would like to transfer the Nandroid backup of the first on thesecond.it can do? there would be stability problems?
i will use the 32gb as main phone and the 16gb for "home experiments" about rom, kernels and another...
thank you
It is possible to restotre it, but HELL DONT EVER RESTORE EFS!!!! it will mess up the imei and you will loose conectivity
aciupapa said:
It is possible to restotre it, but HELL DONT EVER RESTORE EFS!!!! it will mess up the imei and you will loose conectivity
Click to expand...
Click to collapse
of course, just boot, system and data (cache?).
I'm just afraid that in the boot.img is saved some serial number [phone, or a wifi mac address] that do not meet on the other device, can lead to malfunctions or brick
Luca TIR said:
of course, just boot, system and data (cache?).
I'm just afraid that in the boot.img is saved some serial number [phone, or a wifi mac address] that do not meet on the other device, can lead to malfunctions or brick
Click to expand...
Click to collapse
I have been restoring all of my partitions with twrp for a long time, no problems. TeamWin had informed users that restoring the EFS partition on a specific device (nexus 5x, 6, don't remember exactly) would brick the device. But restoring your 16gb backup to a 32gb device might have other problems such as not seeing your entire memory.
Judging by the fact that if you flash your 32gb nexus 5 with the google factory image then you have to manually "wipe data/factory reset" via recovery to get it to recognize 32gb (or else it says you have only 16, small heart attack there), then that means that the memory capacity is defined somewhere in the software (obviously). Also, the partitions would be of different sizes. You'd have no problem transferring backups between identical devices, though when you have a different memory storage, you need to reinstall everything.
Hardware information such as MAC adresses are not saved anywhere, they are retrieved at runtime. Consider that you can even change a MAC address on the fly and the device would have no problem with it as long as you turn it off and on again (ifconfig wlan0 down && ifconfig wlan0 up) (as far as the OS is concerned, because you can't truly change it, I think it's hardware defined). Same goes for IMEI etc. But the flash memory consists of many partitions that need to be of specific size. If you restore a partition with different size than it's original one, you might soft brick it.
In conclusion, no, don't transfer your backup. Unlock the device, flash recovery, flash zips, setup your device again...
chrisk44 said:
I have been restoring all of my partitions with twrp for a long time, no problems. TeamWin had informed users that restoring the EFS partition on a specific device (nexus 5x, 6, don't remember exactly) would brick the device. But restoring your 16gb backup to a 32gb device might have other problems such as not seeing your entire memory.
Judging by the fact that if you flash your 32gb nexus 5 with the google factory image then you have to manually "wipe data/factory reset" via recovery to get it to recognize 32gb (or else it says you have only 16, small heart attack there), then that means that the memory capacity is defined somewhere in the software (obviously). Also, the partitions would be of different sizes. You'd have no problem transferring backups between identical devices, though when you have a different memory storage, you need to reinstall everything.
Hardware information such as MAC adresses are not saved anywhere, they are retrieved at runtime. Consider that you can even change a MAC address on the fly and the device would have no problem with it as long as you turn it off and on again (ifconfig wlan0 down && ifconfig wlan0 up) (as far as the OS is concerned, because you can't truly change it, I think it's hardware defined). Same goes for IMEI etc. But the flash memory consists of many partitions that need to be of specific size. If you restore a partition with different size than it's original one, you might soft brick it.
In conclusion, no, don't transfer your backup. Unlock the device, flash recovery, flash zips, setup your device again...
Click to expand...
Click to collapse
clear, precise and convincing ... you're right .especially different partitioning and memory size did not convince me, you have confirmed to me. I try suffered some rom nougat when I get the device
p.s.:no small heart attack please, i'm an ambulance driver :laugh: (really)
many thanks
The emulated sdcard is not backed up by twrp anyway. I would just adb pull that partition and then push all the files back on the knew device. Data and system should be fine with twrp.
(apparently) it's working!!!
Today, I received the "twin"
just out of curiosity I tried to restore the backup on the 16gb and 32gb [purenexus 6.01] and all seems to work.but I have yet to test it.
Now I go to work tomorrow I put the sim card and use it normally to confirm that everything is ok.
p.s.:the data on the free / busy sd internal memory are righteous

What would happpen if i zero-filled the entire storage?

I'm new to rooting and installing new roms on android systems, but i work making custom linux and windows systems and optimizing for over a decade.
So, my optimizing spirit is tingling to try everything, but this particular thing is just a question, i'm not intending to actually do it.
When using the terminal on TWRP, i've noted that i could fdisk the internal storage (/dev/mmcblk0) and that i could see all the partitions it had, like system, data, cache and so on.
TWRP and other tools only re-format those partitions with ext4 in order to wipe, so i used 'dd' in terminal to zerofill the ones i knew i could wipe and then formatted then in ext4 (with 'dd if=/dev/zero of=partition').
But i had a bigger question and i couldn't find answer nowhere: What would happen if i actually used dd to zero fill EVERYTHING, the entire /dev/mmcblk0, including the very partition table, every byte on it?
Would the device still enter fastboot mode? Would i still be able to connect it on the fastboot utility and flash a new recovery or do something?
Or, if after zero filling, still on the terminal, if i used fdisk to re-create the proper partitions and then formatted them, could i reboot, re-flash the recovery (once there would be the partition for it) and do an very-deep-clean install?
Not that i think that this has any utility, i just wonder if this would end up rendering the device totally useless, or if the fastboot mode is stored in an ROM chip, like a computer bios is.
Guilherme Franco said:
I'm new to rooting and installing new roms on android systems, but i work making custom linux and windows systems and optimizing for over a decade.
So, my optimizing spirit is tingling to try everything, but this particular thing is just a question, i'm not intending to actually do it.
When using the terminal on TWRP, i've noted that i could fdisk the internal storage (/dev/mmcblk0) and that i could see all the partitions it had, like system, data, cache and so on.
TWRP and other tools only re-format those partitions with ext4 in order to wipe, so i used 'dd' in terminal to zerofill the ones i knew i could wipe and then formatted then in ext4 (with 'dd if=/dev/zero of=partition').
But i had a bigger question and i couldn't find answer nowhere: What would happen if i actually used dd to zero fill EVERYTHING, the entire /dev/mmcblk0, including the very partition table, every byte on it?
Would the device still enter fastboot mode? Would i still be able to connect it on the fastboot utility and flash a new recovery or do something?
Or, if after zero filling, still on the terminal, if i used fdisk to re-create the proper partitions and then formatted them, could i reboot, re-flash the recovery (once there would be the partition for it) and do an very-deep-clean install?
Not that i think that this has any utility, i just wonder if this would end up rendering the device totally useless, or if the fastboot mode is stored in an ROM chip, like a computer bios is.
Click to expand...
Click to collapse
The hardware side of fastboot is typically stored on mmcblk0 somewhere in bootloader, meaning it is in the boot partition which is one of the things you would wipe. This would hardbrick your device, rendering it virtually unrecoverable, with a very slim chance of recovering, if its even possible at all, typically, it isn't possible.
Just stick with the tools already designed to handle any wiping that you need.
Sent from my SCH-I535 using Tapatalk
Droidriven said:
The hardware side of fastboot is typically stored on mmcblk0 somewhere in bootloader, meaning it is in the boot partition which is one of the things you would wipe. This would hardbrick your device, rendering it virtually unrecoverable, with a very slim chance of recovering, if its even possible at all, typically, it isn't possible.
Just stick with the tools already designed to handle any wiping that you need.
Sent from my SCH-I535 using Tapatalk
Click to expand...
Click to collapse
That's interesting, i thought my fear was irrational, but it seems to be the case.
But, why is it like that? Why leave everything you need in an RW memory, while you could use a piece of ROM memory to grant the basic functions and the capability of manipulating the RW one (like a PC BIOS)?
In computers you usually don't need to mind wiping everything you can, your device will still work or will be at least recoverable.
Even screwing BIOS and firmwares in computers and some other devices is something that usually won't render the device unrecoverable. Although they sure can cause a hell lot of headache and may need physical intervention like soldering chips and such, i myself strove to find the correct bios images for certain motherboards and to flash the chips because i didn't have an proper flashing equipment, so i had to build an arduino circuit for that (but i luckily worked with detachable chips).
The only other device i know to be rendered unrecoverable are hard drives if you wipe the firmware stored in platter, as it has the service area, which keeps a big part of all information needed to properly address and read the disk and even the other system tracks spread through the disk, that are also needed to control the head, to read and to correct data errors.
Some of these are written at factory, but others must be writable so the hard drive can take care of itself.
But you'd only be able to mess with these data with proprietary low-level software using specific microcode, zero fill and low-level formatting software can't write on any of these tracks, they can only access LBA addressed tracks.
Guilherme Franco said:
That's interesting, i thought my fear was irrational, but it seems to be the case.
But, why is it like that? Why leave everything you need in an RW memory, while you could use a piece of ROM memory to grant the basic functions and the capability of manipulating the RW one (like a PC BIOS)?
In computers you usually don't need to mind wiping everything you can, your device will still work or will be at least recoverable.
Even screwing BIOS and firmwares in computers and some other devices is something that usually won't render the device unrecoverable. Although they sure can cause a hell lot of headache and may need physical intervention like soldering chips and such, i myself strove to find the correct bios images for certain motherboards and to flash the chips because i didn't have an proper flashing equipment, so i had to build an arduino circuit for that (but i luckily worked with detachable chips).
The only other device i know to be rendered unrecoverable are hard drives if you wipe the firmware stored in platter, as it has the service area, which keeps a big part of all information needed to properly address and read the disk and even the other system tracks spread through the disk, that are also needed to control the head, to read and to correct data errors.
Some of these are written at factory, but others must be writable so the hard drive can take care of itself.
But you'd only be able to mess with these data with proprietary low-level software using specific microcode, zero fill and low-level formatting software can't write on any of these tracks, they can only access LBA addressed tracks.
Click to expand...
Click to collapse
The simple answer would be that the manufacturers don't want you messing with the device to begin with so they don't do anything to make flashing or recovering easier for us.
Sent from my SCH-I535 using Tapatalk

Categories

Resources