Showing posts with label USB. Show all posts
Showing posts with label USB. Show all posts

2013-01-06

HOWTO: stress-test a USB flash drive for bad blocks in Linux

Once upon a time you may like to test your USB flash drive [or maybe a SATA HDD, who knows] for bad blocks.

First of all, backup all the data stored on the target drive;
then you should unmount any mounted partitions located on that drive:
# umount /dev/sdz1
Then you can begin the tests (CAUTION: these tests will destroy all the stored data on the tested drive).

You can use dd utility to fill the drive with zeros:
# dd if=/dev/zero of=/dev/sdz
or with pseudorandom data:
# dd if=/dev/urandom of=/dev/sdz
and it will stop unexpectedly on a bad block.

And there's also a little more handy utility called badblocks:
# badblocks -wso /tmp/badblocks.log /dev/sdz
It will sequentially fill the entire /dev/sdz device with some patterns (0xAA, 0x55, 0xFF, 0x00), then read and compare the read data with an actual pattern. A list of bad blocks will be written to /tmp/badblocks.log file.

References:

2012-12-21

HOWTO: boot from a USB drive without BIOS support (using Plop Boot Manager & GRUB 2)

Plop Boot Manager is a freeware featureful x86 boot manager which can be executed from different media (e. g., HDD, CD / DVD, FDD, network, PCI option ROM). It can be loaded by BIOS or by another bootloader (LILO, GRUB, Syslinux etc.). It also has a (unique?) USB drive boot feature with no BIOS support requirement (note: PlopBoot's USB driver currenly provides exclusively a read-only DOS USB drive access).

In case you've installed some GNU / Linux distribution with GRUB 2 bootloader, here is a quick example of how to boot from USB drive using Plop Boot Manager started from GRUB 2:
  1. download the current version of Plop Boot Manager, extract the plpbt.bin file from the archive and put it into the /var/tmp/ folder (you can remove that file later when it's not needed anymore; no admin / root / superuser permissions needed to access this temp folder);
  2. reboot and wait for the GRUB menu interface to appear;
  3. press the 'c' key to enter the command-line interface (CLI) of GRUB:
    grub> _
  4. in case /var/tmp/ is not located on the boot / root partition, but, for example, on the 2nd partition of the 1st HDD, you should start with this GRUB CLI command:
    set root=(hd0,2)
  5. load the PlopBoot itself:
    linux16 /var/tmp/plpbt.bin
    boot
  6. after the Plop Boot Manager has been executed, you can select 'USB' from its menu to boot from your USB drive.
You can also permanently put Plop Boot Manager into the GRUB 2 boot menu (please read the appropriate section of the Plop Boot Manager documentation).
---
Last updated: 2014-06-10

2012-11-21

Some notes about the serial ports & USB-to-serial bridge controllers / converters / cables

Sometimes you may need to get a serial / console cable to connect your embedded device (a router / mobile phone / etc.) to your desktop / laptop computer to do some debugging / administration / maintenance operations (e. g. firmware upgrade).

Basically, there are 2 common versions of serial ports which have incompatible voltage logic levels: ones using TTL/CMOS [lower, 5V / 3.3V] levels and others with RS-232 [higher, up to 25V!] ones.
  • RS-232-level serial ports are commonly found on relatively older PCs; these ports are often marked as "COM" and usually have DB9M connectors; in some cases, serial ports have DB25F connectors and should not be confused with parallel ports ("LPT") which were commonly used for connection of printers.
  • The majority of modern embedded devices (such as routers, phones, GPS navigators, multimedia players and TVs) have an internal TTL/CMOS-level serial port.
Caution: please don't connect a TTL/CMOS-level device directly to the RS-232-level port, because you can burn your device!
There are some signal level shifters / converters though, such as the Maxim MAX232 chip.

USB-to-Serial/UART bridge chips operate mostly with TTL/CMOS-level signals; the most widely used series are:
  • Silicon Labs: CP21xx (CP2101, CP2102, CP2103, CP2104, CP2105, CP2108, CP2109, CP2110 etc.);
  • FTDI: FT232 (B, H, R etc.);
  • Prolific Technology: PL-2303 (EA, HX (HXA, HXD), RA, SA, T (TA, TB), X (XA) etc.).
In case you're just looking for device drivers:
  • MS Windows & Apple Mac OS X drivers can be usually found on manufacturer's website (see above);
  • in modern Linux distributions, the necessary drivers are built-in.
FTDI FT232 chips seem to be the best (and most expensive) ones;
meanwhile, Prolific PL-2303 are probably the most popular series of the USB-to-serial converter chips found in old cheap mobile phone USB data cables; therefore, you can easily modify such cable to get a cheap USB-to-serial (UART) adapter instead of buying a separate one.



Warning: poor quality PL-2303 Chinese chip clones can often be found in cheap "data cables".
  • Fake chips are marked like "AS8303", "MS3303" etc., or even fully imitate original markings.
  • Production date printed on the chip is often invalid (e. g., it's far in the future).
  • Their USB device IDs (VID & PID) can be identical to the original chips or different.
  • The chip drivers provided for MS Windows installations are represented by the original or slightly (new copyrights & device IDs only) modified original (often outdated to bypass the original vendor driver protection) PL-2303 drivers.
  • Data communication powered by such a fake chip cable is unstable, can often be interrupted and result in data loss and other problems.
Therefore, cables powered by such fake / clone chips are not very suitable for their "primary usage" in data cables; more to say, they are useless and even dangerous for critical operations like firmware upgrade (incomplete flashing can "brick" the connected device). It's better to discard / recycle / dispose of such garbage adapters.

Here are sample USB device IDs of 2 counterfeit chips (data provided by lsusb utility from the usbutils package in Debian GNU / Linux OS):
  1. marked as "MS3303HG", USB IDs don't resemble the original ones:
    ID 0e55:110b Speed Dragon Multimedia, Ltd MS3303H USB-to-Serial Bridge
  2. marked as "A1 AS8303DS", USB IDs are identical to the original ones:
    ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
---
Last updated: 2014-06-10