Showing posts with label flash. Show all posts
Showing posts with label flash. Show all posts

2014-07-01

Hints: how to upgrade customized Micron C400 SSDs to the latest generic firmware version

Important notes:
  1. DISCLAIMER: this guide is provided here only "just for fun" for experimental, research and educational purposes without any guarantees (or warranties, responsibilities, obligations, liabilities etc.; even no repeatability guaranteed, as this guide has been based solely on just one particular specimen device, sorry), so use it at your own risk (even more, the so-called "reverse engineering" can possibly be illegal in some areas);
  2. ATTENTION (DANGER): it can result in an irreversible destruction of ALL or ANY data stored on the target device (including the loss of important metadata like device usage statistics, but it's not wise to hope it will heal / recover / restore any worn-out memory blocks / chips or make the device good as new in performance) and, in theory, on some other storage devices -- please back up ALL the valuable data FIRST;
  3. CAUTION: it may even brick your device;
  4. WARNING: moreover, it may void the warranty, if any.
  5. Feel safe & free to enjoy! ;-)

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-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