On Wed, Mar 09, 2011 at 09:01:33PM +0800, Shawn Guo wrote:
On Tue, Mar 08, 2011 at 04:59:18PM +0100, Loïc Minier wrote:
On Tue, Mar 08, 2011, Shawn Guo wrote:
I'm scanning all 7 cards I have with the script wait_device, each card with 10 iterations of the test.
- Transend 4GB SD
- SanDisk 2GB SD
- KingMax MMC Mobile 2GB
All above 3 cards passed the test with giving "Could list partitions after 0 seconds!"
- SanDisk 4GB SD
- SanDisk 4GB SD
- SanDisk 4GB SD
- SanDisk 4GB SD
All above 4 cards failed with giving "Giving up after 30 seconds failing to list partitions". The interesting thing is it does not always fail from the beginning. Some cards can even pass the test for 4~5 iterations, and then start failing. If it starts failing, it always fails until I remove the card and replug it.
This is really valuable data; SanDisk 4 GB SDs seem to be a trend above! It would be interesting if you could borrow another USB reader for some hours to run the tests on the same SD cards, but a different adapter.
Today in office, with another reader and another maverick machine, the result seems consistent. The new thing is those four failing cards sometime ends up with "Could list partitions after 2 seconds!", besides the two possible results reported before, 0 second and failed to list.
I have to add something here to correct the conclusion about reader's impact.
I just got the third reader to play with, and interestingly it can get all of these failing cards give 'Could list partitions after 0 seconds!'. Let's focus one failing card (#4, the very first one) to see the difference that readers make here.
Reader #1: SSK Reader #2: PISEN Reader #3: another SSK (golden one)
Host machine (office one): Intel(R) Pentium(R) 4 CPU 2.80GHz + Maverick Server
=== wait_device testing === * On reader #1, consistently fails with 30 seconds timeout * On reader #2, very likely succeeds after 2 seconds (5 out of 6 iterations), (fails with 30 seconds timeout on the 6th iteration) * On reader #3, consistently succeeds after 0 seconds
=== l-m-c installing with sleep(5) === * On reader #1, fails on '/dev/sdb: No medium found' like below. [...] proc umounted /dev/sdb: No medium found
sfdisk: cannot open /dev/sdb read-write Traceback (most recent call last): File "/usr/bin/linaro-media-create", line 127, in <module> args.should_format_rootfs) File "/usr/lib/pymodules/python2.6/linaro_media_create/partitions.py", line 71, in setup_partitions board_config, media, HEADS, SECTORS, cylinders) File "/usr/lib/pymodules/python2.6/linaro_media_create/partitions.py", line 310, in create_partitions run_sfdisk_commands(sfdisk_cmd, heads, sectors, cylinders, media.path) File "/usr/lib/pymodules/python2.6/linaro_media_create/partitions.py", line 288, in run_sfdisk_commands return proc.communicate("%s\n" % commands) File "/usr/lib/python2.6/subprocess.py", line 691, in communicate return self._communicate(input) File "/usr/lib/python2.6/subprocess.py", line 1258, in _communicate self.wait() File "/usr/lib/pymodules/python2.6/linaro_media_create/cmd_runner.py", line 66, in wait raise SubcommandNonZeroReturnValue(self._my_args, returncode) linaro_media_create.cmd_runner.SubcommandNonZeroReturnValue: Sub process "['sudo', '-E', 'sfdisk', '-D', '-H'
* On reader #2, fails on 'mkimage: Write error on /tmp/tmpViO9KL/boot-disc/uImage: Success' as below. [...] This filesystem will be automatically checked every 26 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. 162+1 records in 162+1 records out 166624 bytes (167 kB) copied, 0.0407654 s, 4.1 MB/s mkimage: Write error on /tmp/tmpViO9KL/boot-disc/uImage: Success Traceback (most recent call last): File "/usr/bin/linaro-media-create", line 134, in <module> args.device, args.is_live, args.is_lowmem, args.consoles) File "/usr/lib/pymodules/python2.6/linaro_media_create/populate_boot.py", line 57, in populate_boot boot_disk, boot_script, boot_device_or_file) File "/usr/lib/pymodules/python2.6/linaro_media_create/boards.py", line 118, in make_boot_files boot_device_or_file) File "/usr/lib/pymodules/python2.6/linaro_media_create/boards.py", line 312, in _make_boot_files cls.load_addr, uboot_parts_dir, cls.kernel_suffix, boot_dir) File "/usr/lib/pymodules/python2.6/linaro_media_create/boards.py", line 389, in make_uImage 'kernel', load_addr, load_addr, 'Linux', img_data, img) File "/usr/lib/pymodules/python2.6/linaro_media_create/boards.py", line 363, in _run_mkimage proc.wait() File "/usr/lib/pymodules/python2.6/linaro_media_create/cmd_runner.py", line 66, in wait raise SubcommandNonZeroReturnValue(self._my_args, returncode) linaro_media_create.cmd_runner.SubcommandNonZeroReturnValue: Sub process "['sudo', '-E', 'mkimage', '-A', 'arm', '-O', 'linux', '-T', 'kernel', '-C', 'none', '-a', '0x90008000', '-e', '0x90008000', '-n', 'Linux', '-d', '/tmp/tmpViO9KL/binary/boot/vmlinuz-2.6.38-1000-linaro-mx51', '/tmp/tmpViO9KL/boot-disc/uImage']" returned a non-zero value: 1
* On reader #3, succeeds !!!
So I would say the result not only depends on the cards but also readers.