As seen on Hackaday!
While on my quest for more eMMC-based storage devices, I stumbled upon a few devices that piqued my interest: eMMC-based SATA SSDs! I found two models of particular interest: Dell had M.2 modules with a 2.5″ adapter, and HP had custom boards intended for use in cheap laptops (for example, the HP 14-an012nr). Although the former was easier for me to use (but not acquire), I will be focusing on the latter in this blog post.
Overview of HP 14-am/14-an Series SSD Module
Unlike Dell’s convenient M.2 modules, the cheaper boards from HP (costing about $12 USD when I purchased them) had a physical interface intended for use only with its intended host; despite using a SATA interface, physically it used a 10-pin FFC (Flat Flexible Connector, aka “ribbon cable”) since it was designed to work only with HP’s 14-am/14-an series of low-cost laptops. The boards are labeled “DINERAMD-6050A2862201-DB-A01” and have a copyright date of 2016 in my case.
The BayHub OZ788WR2 Bridge Chip
These eMMC-based SSDs use a curious little chip, the BayHub OZ788WR2 (labeled 788WR2A on the chip itself). It is an SD/MMC-to-SATA adapter, with an SD UHS-II/MMCplus HS200 device interface and SATA II 3Gbps host interface. Apart from the brief description from the manufacturer, no other data is available for the chip (and even finding the chip online is basically impossible).
It’s a shame that so little is known about this chip (and that it’s so rare to find in actual devices), especially since high-performance SD-to-SATA adapters otherwise do not exist, as they use outdated SD-to-CompactFlash adapter chips that are limited to 25 MB/s speeds. If I had the engineering expertise, time, money, and ability to acquire these chips, I’d totally try to make an SD-to-SATA adapter with this chip… but alas, that will still remain a fantasy.
Step 1: Pinout Discovery
The single connector on the eMMC SSD is a ZIF FFC (Zero Insertion Force, Flat Flexible Connector), with no publicly available pinout or any other information. Perhaps this was why I got them for so cheap – apart from holding only 32 GB, nobody could even use them in their own computer even if they wanted to!
When trying to reverse engineer an unknown connector pinout, one needs to first look for ground pins. This is easily accomplished by using a multimeter with a continuity or diode test function, with the multimeter’s positive lead on a known ground point on the DUT (Device Under Test) – screw holes are often good candidates to look for. Ground pins will read as a short, but active IC and power pins will look like a forward-biased diode – appropriately 0.5 to 1 volt. I found 3 power pins (these are often grouped together on connectors for greater current capacity), 3 ground pins, and 4 SATA data pins. The data pins don’t show up on the multimeter test since they have series AC coupling capacitors, but they are easily located next to the connector and have clearly visible differential pairs leading to them.
The issue now is trying to find what order the SATA data pins are in, and how they relate to a regular SATA interface. As it turns out, the pinout is very simple: it matches the pinout of the 7-pin regular SATA interface! This makes sense as the SSD module and the laptop itself are designed to be cheap to manufacture.
Step 2: Building the Adapter (Take 1)
With the pinout known, the harder part is wiring up the connector. However, without a matching connector for the ribbon cable, I have no choice but to solder to it.
As I soon learned, not all flex cables are made of heat-resistant polyimide (aka Kapton) – this one melted before I could even tin the exposed leads. No matter, I’ll just use my trusty magnet wire and hook up the data and power lines! With the help of a salvaged SATA connector from a dead laptop drive, I was able to cobble together a crude adapter for the eMMC SSD board.
Although I didn’t end up taking a picture of the adapter, it wasn’t pretty. It also wasn’t very functional either – although the eMMC SSD board was able to identify itself (on my PC it showed up as a “BHT WR202HH032G E70211F5”), I couldn’t actually perform any data transfer without causing the OZ788WR2 to log hundreds of interface checksum failures (but hey, it supports S.M.A.R.T. data reporting!).
After some tweaking of the wire spacing, I was able to get the adapter stable enough to work, and encased it in hot glue for protection. It lasted a few weeks but eventually stopped working because one of the data wires broke off inside the blob of hot glue. Additionally, the outer contacts on the ribbon cable connector were peeling away from its plastic substrate. It was time for a rebuild.
Step 3: Building a Dedicated eMMC SSD (the teaser!)
Since I had multiple eMMC SSD boards, I took one, replaced the eMMC with a 128GB one from Samsung (the KLMDG8JENB-B041) and removed the ribbon cable connector. In its place, I used some very thin twinaxial cable from a dead MacBook and used a gutted CFast-to-SATA adapter for a shell. Stay tuned for that in another blog post!
Step 4: Building the Adapter (again!)
Much like my previous attempt, I used a salvaged PCB from a dead laptop drive, but left a lot of it instead of chopping it off directly at the connector. This particular one was a dead Samsung HDD, and it had one particular feature that I could use to make a stronger adapter: it had a TSOP footprint for the DRAM cache, which was just the right pitch for me to solder the ribbon cable to!
With a little help of my hot air rework station, I removed the DRAM cache and DC-DC converter, leaving the SATA AC coupling capacitors and the power input components (filtering choke and capacitors, and input overvoltage protection) behind.
After scraping off some solder mask, I soldered the SATA data wires and the ground wires surrounding them with very thin magnet wire, trying to keep the data pairs as close to each other as possible to minimize the chance of interference causing problems. The power wire was soldered to the power input components, right next to the input capacitor for better power delivery.
After checking with the multimeter that no short circuits were present, I hooked up an eMMC board and plugged it into my PC. It enumerated without issues, and running several tests including CrystalDiskMark, h2testw, and Hard Disk Sentinel’s random read test, amassing several hundreds of gigabytes in reads and writes with zero CRC errors logged in the S.M.A.R.T. data.
With everything checked out, I cleaned the circuit with isopropyl alcohol and covered the exposed end of the ribbon cable and the magnet wires with clear epoxy for protection. I also used a bit of epoxy on the flex connector to re-secure the lifted contacts to the substrate.
With a bit of wire and a circuit board from a dead HDD, I was able to reuse cheap eMMC-based SATA SSDs on computers that they weren’t meant for (and they even had copies of Windows 10 Home with extractable license keys! 🙂 ). Although not as fast as a modern full-fledged SSD, its relatively high 4K IOPS performance means it works well enough as a quick boot drive for running quick tests of OS installation without needing to sacrifice a bigger drive just for testing – and they consume less than a watt even when fully active!
Pingback: Steady Hand Repurposes Cheap SSD Modules | Hackaday
Looks very interesting
Las emmc individuales cuestan mucho :(, deberían costar menos que un ssd, pero cuestan más
would you say that the emmc controller of this device is slow? I found a benchmark reaching 120mbs. Would not that be a real high-speed emmc-to-sata?
I follow your memories adventures already to some times and I am happy to find of this type of content in the web. I dare to do some successful experiments thanks to your guides. thank you.
I’m glad you enjoy the content I write, I appreciate it!
I’ve actually used this board before – I made a 640GB SSD using my Toshiba eMMC chips that I’ve previously used to build a memory card. In my experience, that Sage S681 controller used on those 10x RAID 0 boards isn’t great. Each channel is limited to about 25 MB/s (so you need a lot of chips to get a decent speed), and it is very difficult to get a large number of eMMC chips that have both high capacity and performance, for a reasonable price. Most eMMC chips from online vendors are many times more expensive than a new SSD or (micro)SD memory card, so it’s usually not worthwhile unless one has a large number of eMMC chips already available.
I’ve benchmarked mine, and with 10 of the Toshiba THBGM4G9D8GBAII chips, I got a sequential read/write speed of 246 and 48 MB/s, but 4K random performance was only 6.2 and 1.1 MB/s, which is too slow to run an operating system from. Using an eMMC with better 4K random performance would help but it gets really expensive to do that.
I wonder if this works in reverse
By any chance you ever try to ‘upgrade’ hp unit with m.2?
I don’t have access to one of those laptops myself, but if one can find space inside the laptop, it could be possible to wire in a SATA SSD with the ribbon connector.
You are absolutely insane. I am immediately taking a rework station off my shopping list, lest it lead to similar insanity in myself.
I found the comment about using the chip(s) from “SD-to-CompactFlash” interesting, as I have one of those laying about, but haven’t got around to looking up the specs on what a CF interface consists of.
For a crazy second there, I imagined accessing SSD drives from my Arduino like they were SD cards. Only 13 weeks to format a drive in your arduino.
So – here’s a question – can you do an on-board secure erase of this Frankenstein’s monster of a creation?
The OZ788WR2-based boards actually support ATA Security Erase, heck they even support TRIM and SMART monitoring too.
The SD-to-CF ones support pretty much nothing in that regard.
(apologies, since there is no way to edit my last comment)…
Having just googled “10 ports Micro SD TF Memory Card to SATA SSD Adapter with RAID Quad 2.5″ Inch SATA Converter”, I do believe that your particular insanity is quantitatively less than whomever invented that device. I say quantitatively because they’re obviously making thousands of these absurd devices.
I bought one of those 10x RAID-0 boards a few years ago, and even put ten eMMC chips on it – I just never got around to making a blog post, and Linus Tech Tips already made a video about it so I felt like there wasn’t much need to feature it here.
Simply said, these boards suck. They claim to support TRIM and SMART but my testing has shown this is not actually the case. I’m tempted to buy another one of these boards to take another crack at it, but that’s only if I can get a large number of faster eMMC 5.0/5.1 chips for a good price online. Even used chips sell for a lot more $/GB than other Flash products, even SSDs.
Thanks to you, I was able to retrieve important information from an emmc module like this.
Thanks a lot! Greetings from Argentina
Hello, thanks for sharing your diy !
It happens I just salvaged 15 of those drives from such HP laptops, which I converted with ssd, using the unused slimsata line.
So I’m planning to print some PCBs to adapt those small 32gb drives from flex ribon to sata, they would be nice to refurbish some small linux desktops.
And as I’m redrawing the sketch, I’m quite doubtful about the rx/tx lines location. Following your diagram tx is near the 5v, but from your picture I don’t see the wires crossed, as on the power/data sata connector, that’s rx which is nearest of the power.
I would be glad to have a second sight on this, as I don’t have equipment to do such soldering.
PS: is it useful to have those decoupling capacitors on the data lines over the adapter ?
After closer examination, the pinout for Rx/Tx was based on the lines going to the OZ788WR2 bridge IC’s pins (I was able to reverse-engineer from a leaked schematic) and forwarded those pin designators to the connector. Trying to find definitive information online about Rx/Tx referring to either the device or host and from pin to connector has been surprisingly difficult.
The commenter above you said that this pinout worked for them, but this depends on how the connector was wired up and how the Rx/Tx was interpreted.
Thank you for your answer !
Well I’ve done a gerber following the photograph, if it worked this way it should be right. I’ll tell in a few weeks and share the files if anyone still interested!
Yatta ! It works, just as expected, thanks to your help. But still, as a first shot in pcb design I’m quite surprised ^^
Some shots, disk throughput and kicad project with gerber files :
This is the sata connector ref, I couldn’t find any better connector with datasheet than this one on aliexpress https://fr.aliexpress.com/item/1005001679141537.html
And FFC, quite generic I think : https://lcsc.com/product-detail/FFC-FPC-Connectors_THD-THD05175-10CL-GF_C283172.html
Awesome to see that it worked so well on the first try!
YAY ! It’s exactly what i search ! Thanx for pic & links, good job !
Wonderful article. I tried to do the reverse…ie I wanted to be able to add a 2.5 inch sata drive to my laptop which only has the emmc 64 gb thing. After hooking up everything, the new sata drive doesn’t seem to power up…the multimeter shows power coming from the flex to the sata port but the drive doesn’t seen to power up.
I was curious about the ground pins on the power segment of the sata port…the 15 pins one…does it have to be connected to the ground on the emmc side or are the grounds on the other 7 pin segment of the sata (which are connected to the 7 pins of the emmc flex) sufficient to complete the power circuit of the drive and turn it on…after all, all grounds are shorted everywhere right ?
How are you hooking up the new drive via the ribbon cable, and are you adding a 2.5″ hard drive or SSD?
The grounds from the SATA data side might not be low-resistance enough to help with powering a larger 2.5″ drive.
Thanks a lot for reply and sorry there’s a bit of a time difference so have a delayed response from my end.
Yes I am using the ribbon cable coming from my hp laptop connecting it to an sata adapter and then hooking up a 2.5 inch hdd (rated for 5 v, 1 amp, taken from another laptop).
I did do some tinkering last night and shorted 2 of the grounds together and hooked it to them common/ground of the power segment (15 pins) and got the drive to spin…but it’s not detected by the laptop.
I did some more investigation and found I had one of the TX or rx wires missing…fixed that as well, but the thing still won’t work.
Perhaps this laptop hp 14-dk0010ca has different TX and rx pairs than the one in ur schematic…though I could see the 4 filters on the same pins on the motherboard as you showed.
The other thing I was thinking was perhaps the TX and rx is reversed for me since I am going from the motherboard to an hdd rather than like you did (from sata ssd to a motherboard)…though that doesn’t make much sense…i will ry reversing the TX and rx differntial pins to see if it makes a difference since I don’t have an oscilloscope.
Any thoughts would be greatly appreciated.
Thanks again, Nooman
Reversing transmit and receive lines is something I can imagine HP doing just to make things incompatible.
SATA, like old-school RS-232, needs Tx to go to Rx and vice versa. Be sure the pair polarity is correct as well.
Thanks a lot…a lot of permutations and combinations later (I tried all possible TX+-RX+- combos) and the only combo that made the drive power up was 555GRx+Rx-GTx-Tx+G same as the one shown in this article but with TX and RX swapped (I think another user had the same experience).
No other configurations allow the drive to turn on. However the sata drive doesn’t get detected by the laptop (even though there are sound/spin speed changes in the drive)
Any ideas on what to try ? Th3 sata drive I am using has a older windows os and the laptop is 2019 hp. Should I try an ssd and see if the laptop finds it ?
Thanks a bundle,
The mechanical hard disk drive could be pulling too much power that it’s disrupting communications. Try an SSD and see what results you get.
Does the Dell drive, when connected to a computer via its adapter, get exposed as an eMMC? If not, have you found a way to send eMMC commands to the eMMC?
Does the M.2 drive use a standard M-key connector? I tried plugging it into the M-key M.2 slot on my ODROID-M1 and it won’t fit ([picture](https://www.reddit.com/r/pics/comments/12hu0ou/m2_drive_on_odroidm1/))?
The raw eMMC is not exposed, but instead appears as a SATA II SSD to the computer. The Dell M.2 eMMC modules are B-keyed only, with no additional M-keying like most SATA M.2 SSDs. Some precise carving with a rotary cutter might allow one to add the M-key slot to the PCB edge connector.
Have you found any special commands to interface eith the eMMC?
Unfortunately, I have not. The OZ788WR2 indicates it has the Media Card Pass-through ATA feature, but I am not aware of any software out there that uses it.
What kind of special commands were you thinking of?