Debian, Ubuntu & Co. on My Passport Wireless PRO

Hey People,

6 Months ago, i got myself a Portable Wireless Drive. It was an Intenso Memory 2 Move with 1TB. I chose that drive because it had an additional LAN, which i thought, would ensure a minimum of Transfer speed. But unfortunately, i was wrong. The Drive wasn’t just slow. It was terrible. HD Streaming was and still is mostly impossible.

So i got myself a new one. At that time, the MPW PRO wasn’t in Stores, so i bought a My Passport Wireless with 2TB. Finally i had a Drive which met my Speed Requirements, but shortly after, the Battery died. So i had to bring it back to the Store. That was when the PRO Version finally had made its way to the Stores. After paying a little extra, i finally got myself a 3TB My Passport Wireless Pro.

Although i expected it to be much faster than the MPW, given its 5GHZ WiFi, i was again a little disappointed. Still, it was more than fast enough for my Purposes. But somewhere i read about the new Function in the AFP (Netatalk Protocol) that it would support the Spotlight Indexing, which i was very eager to use. Unfortunately, the Netatalk version on the WD Drives does not Support that Function.

So, because of that and a thousand other Reasons, i decided to somehow implement that Function. What started in an effort to recompile one simple Programm, ended up in soldering an Audio Jacket to the Drive in order to Access the UART Interface and recompiling the Kernel, the Bootloader and all the Drivers needed, so i can put another OS onto the Drive.

Please bare in Mind, that i had absolutely no experience with Linux, the Command Line, with Compiling or anything else that was needed to get this done. It took me two weeks just to get the Building Environment in a VM up and running, which did not give me a bunch of Errors Every time i tried to start the Compilation of the official Buildroot Source Code Package. There were some very special Requirements which were, and still not are, noted anywhere.

But i don’t think you Folks want to read the 200.000 Pages of Horror and sleepless Nights i have gone through, just to learn what i needed to get this done. And i am absolutely sure, that some of you people would have done this in a matter of hours. (It took me 4 Months and 2478 Liters of Coffee)

What have i done:
I have recompiled the original Kernel, the Drivers and the Bootloader in order to boot Debian Jessie from a SD Card. I have tried Arch Linux, Ubuntu, Gentoo and Debian which all worked surprisingly fine despite a few minor issues now and than.

My current Status is as follows:
The Bootloader, the Device Tree Blob and the Kernel are uploaded to the internal 64Mbit (8MB) Flash. The Root Filesystem is located on a SD-Card. I have integrated all necessary Drivers directly into the Kernel so that no initial Ramdrive is needed. Actually that was easier than learning how to create an InitRD :grin:.

I attached a 4 Port USB-Hub to the USB in order to plug in a USB 2 VGA + Keyboard + Mouse to the System. And it works. :hushed:

I do now have a Battery powered, overclocked 2 Core ARM v7 1.35 GHz + 512MB Ram + 3TB portable Desktop System which runs on a regular Linux Distribution. It just took 4 Months, much more Hair Loss than i will ever admit and a lot of broken things, which i broke on purpose, at least according to my Wife. My USB 2 VGA Adapter just died so i have to use a remote Desktop and the usual SSH Access to manage it.

My Question is?
Can i now be at least a little proud of myself?
Like i mentioned before, i really did not have any experience with Linux, the Commandline, U-Boot, Kernels, Compilation and so on. I had never done anything like this before. But once i started, i just couldn’t stop. And there were so many big and little things that needed to be done and that needed to be learned, that four Months passed before i had it completely done. Although its not nearly done. :confused:

But its working.

  • Does anyone want to know how to do it?
  • Would you people like me to upload the Files (Source and ready to use Binarys)?
  • I am considering writing a short manual. But before i do that, i would want to know if there actually is any Interest?
  • Before i forget: I got the Spotlight Indexing Feature up and running

I even wrote a little Script which takes care of the Flashing the Kernel, Bootloader and DTB’s.
BTW, i didn’t know how to write Scripts before i started. But its really just a few lines, so nothing to be proud of…

So basically the drive can be used like any other ordinary PC. You can create a minimal Root Environment (Buildroot, Bootstrap etc…) or use a preconfigured Base System of Ubuntu, Debian, Gentoo Arch Linux…
It just needs to be ARMhf compatible.

Like mentioned before, i did try out all of the above mentioned. And they all work. You just need a few special Drivers and Daemons from WD and customized Bootscripts in order for the Drive to work. I found a little Tool called GPIOwatch, which i used to customize the Function of the Battery/Transfer Button.

But i wasn’t able to get the original WD Webmanagement running. So if you want to configure and personalize the Drive, you definitely will need the Console (and some Linux Experience of course)

Returning to the Original State is actually very easy.

Because i chose to put the Rootfilesystem onto a SD-Card, backing up the Root or even changing the Distro is a matter of Minutes. Having Access to the Physical Console Interface does make things much easier and much more transparent. But those of you, who actually use and need the SD-Card Slot would need to put the Root FS onto a USB-Drive or like WD does, put it on a hidden Partition on the HDD. I wasn’t able to Access the 5 hidden Partitions at the End of the HDD from outside. Even if you attach the HDD directly to a regular PC or via a USB 2 SATA Adapter you won’t be able to access the Files, you’ll only see Free Space at the End of the Drive. I stopped investigating into this direction because i decided very early not to use the HDD for the Root.

The Way i did it, with the Base System on a SD-Card, the System reacts and boots very quickly. 9 - 14 Seconds until the Desktop is up and running does not sound that bad now, does it? Of course it depends on your Distro and Configuration, but even a very bloated and overloaded Testsystem like i do have it right now, does completely boot up within 14 Seconds.

I should not forget to mention, that English is not my native Language. Its actually German. So if you people have trouble understanding my Story, feel free to write a Letter to my former English Teacher. And especially, feel free to ask me.

I just want to know if there is enough Interest, so that WE could all together finish this up, prepare a manual and maybe even some Scripts and Tools to ease the Process. If so, i would very much like to share my Experience, my Files and would greatly appreciate any COFFEE and HAIR DONATIONS you People would be willing to give… :sunglasses:

Now i got 2 Hours of Night left, to Shave (the few Hairs i have left), take a Shower and Sleep until i have to get to work.

Hope to hear from you soon,

regards

DeKu

3 Likes

Thanks for sharing.

If you upload any of the specific information on how to do this, make sure you add a disclaimer for the users, so they understand that they will be doing this at their own risk.

Thanks for pointing out. Im pretty sure i would not have thought of that.

But, till now there does not seem to be much interest anyway.

Thank you for posting a link to this in the MPW forum! I would of never found this post without you doing that! I do have both the original and pro versions though I haven’t done much with the original since my original digging before I started using it. I’ve dabbled into the pro a little bit but not as much as I would like to but planning on sitting down one of these weekends and play with it. While others might not like the 200 pages, I think I would find it a good read, at least learn some things about it that I didn’t find already or what to avoid to keep some hair :wink:

I’m not a pro with scripting but have written several scripts before so if you need any help, please let me know.

@PuDLeZ

Great to see someone Answering after all.

It were the little things that kept me up all night(s).

For Example: There is a Tool called “MCU Daemon”. That Binary creates a File in the Temp Directory. You need to “echo 22;04 > /tmp/MCU_Daemon” for the “Watchdog” to recognize that the Unit has successfully booted, to prevent the LED’s from crazy Flashing.

Or:

You need to implement: “echo 22;14 > /tmp/MCU_Daemon” right before the shutdown or poweroff command, otherwise the Unit won’t poweroff.

At this moment, i am not in complete understanding of controlling the LED’s, although it seemed pretty easy at the Beginning.

Right now i am modifiying the Bootloader (again) for some kind of a “case dependant” boot. Meaning: powering on the Unit while pressing the Battery Button, loads the second Kernel from the Flash which is preconfigured to load with a root fs on a USB attached Storagedevice.

It’s really incredible how many “little” and “tiny” Things there are, and how much someone can personalize such a device.

It’s hard to explain what i felt when i finally managed to boot a self compiled Kernel, with custom Wi’Fi Drivers and most importantly with a custom Debian Root FS.

It was at least a hundred times that i thought i would have broken the Drive. But as you can see, it’s incredibly bulletproof.

The Drive has two 2x2 Wi-Fi Adapters which were somehow separated into seperate Adapters. I am trying to understand if this was made by Hardware, Firmware or Software (Drivers?). I intent to find a way to (re)join especially the 5GHz Adapter, but thats too many Details again, I think.

Everything i really wanted to write was: i would be glad to share my experiences, as little as they may be.

But one last thing. How is my writing? I mean my English. I keep writing without knowing if people can actually understand me. Hope its not all just gibberish.

DeKu

2 Likes

I understand what you’re saying, no need to worry about your English skills! :slight_smile:

Very interested in seeing how to do this - excited about the possibility of a portable sync server. Is the hotspot function available?

Oh… yes… Very interested in this.

Hallo kuruptor,

That’s awesome! (Echt Hammer!)

That’s exactly what I’m looking for though I’d prefer having a Debian system running from the internal harddrive. I’d like to power a webdav (or nextcloud) server since Linux is not supported as a client by WD and I’d like to sync macOS, Windows, Debian/Linux, Android and iOS devices. (And maybe use cryptomator for that.)

Also I’d like to store the data encrypted. Does dm-crypt work on your system / is it possible to turn the harddrive into a luks encrypted volume? (Maybe it would be possible to store the key on an seperate SD card - no SD card, no access).

Would it be possible to put up all you learned, your sources and images on github (or something alike)?

Is it possible to manipulate the system through ssh only or do I really need to solder on a UART connection?

Thanks a lot & may your hair grow back strong :wink:

Hi,
If you or we community want to start documenting, on a wiki.
pm me @RzrFreeFr

Hey Guys,

Sorry for the late Reply.

It’s great to get some Feedback.

@Pulcinella
The Hotspot Function is available and can be configured pretty easy. I’ve already tried a couple of other WiFi Drivers to compare Speed and Reliability. But there was not much change compared to the original (customized) Driver of WD. I am still looking for a way to (re)join the WiFi’s, because they somehow split the 2T2R Interfaces into two separate 1T1R’s. But my Knowledge and Experience seems not enough to get this done. Maybe one Day more experienced Users will have a look at this.

So, a portable Server is exactly what i am using it for right now. Yesterday, i attached my USB2LAN Adapter hooked it up to a LAN and connected 9 Clients via WiFi. 5 of them with 2.4Ghz and 4 with 5Ghz. I wasn’t expecting it to work as good as it did. Everyone i wanted had Access to Shares. Some had Read and other Read/Write Privileges. AFP (Netatalk), Samba and CIFS.

@mickz
You can run the System from the internal HDD if thats what you would prefer. Although i haven’t tried, i see no Reason for dm-Crypt or LUKS not to work. The Kernelversion is 3.10.24 and it is a pretty modified Version. Storing the Key on a separate USB Drive or SD-Card is possible.

Having physical Access to the UART would definitely be a good thing. But it wouldn’t be necessary if you use a preconfigured Package. You would only need to flash the modified Kernel and the Bootloader to get the System to boot from your Partition.

You would have Access to your Root Partition by simply plugging the Drive into your PC or MAC. That way you could configure and or Debug the System very easily.

I have just started to gather everything that i used, that i have done and that i needed to get this to work. To be honest, i have never used Github. But i think this is a good chance to start.

My ultimate Goal is to prepare everything and pack it into one Package just like the original Firmware. Different Packages for different Purposes. For Example: One Package to Boot from SD-Card Partition 1, another to Boot from HDD and so on. But there is still a long way to go.

I will upload everything i have within a week or two, i hope. I’m even thinking about creating a Website dedicated to these Drives. But im not very good at such things. So i will look if my Hoster has some fitting Templates. I am absolutely open for suggestions.

DeKu

you can use github wiki feature to start with

Or

http://westerndigital.nas-central.org/wiki/Main_Page

So forgive me if I’m way off base with this but on the official firmware, I can see it’s broken into 4 different devices
Note: The only edits I did was replaced with “REMOVED” which was home AP name and the mac addresses…

[root@MyPassport ~]# iwconfig
br0 no wireless extensions.

wlan3 unassociated Nickname:“WIFI@REALTEK
Mode:Managed Frequency=2.412 GHz Access Point: Not-Associated
Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

wlan0 IEEE 802.11AC ESSID:“My Passport (5 GHz) - 043900” Nickname:“WIFI@REALTEK
Mode:Master Frequency:5.745 GHz Access Point: REMOVED
Bit Rate:434 Mb/s Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=28/100 Signal level=25/100 Noise level=0/100
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

wlan2 IEEE 802.11bgn ESSID:“My Passport (2.4 GHz) - 0438FB” Nickname:“WIFI@REALTEK
Mode:Master Frequency:2.417 GHz Access Point: REMOVED
Bit Rate:150 Mb/s Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

lo no wireless extensions.

wlan1 IEEE 802.11AC ESSID:“REMOVED” Nickname:“WIFI@REALTEK
Mode:Managed Frequency:5.745 GHz Access Point: REMOVED
Bit Rate:434 Mb/s Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Encryption key:------- Security mode:open
Power Management:off
Link Quality=71/100 Signal level=100/100 Noise level=0/100
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

[root@MyPassport ~]#

Yes,

Thats exactly how it is with mine, too. But if you take a closer look at the Board itself, you’ll see that there are only 2 Wi-Fi Chips. I took a look at the Datasheets, at least the ones i could get my hands on. And they show that theese are both 2T2R Interfaces. One 2.4 and the other one for 5Ghz.

But i am really not sure anymore if its doable. Because depending on your Drive’s Configuration the Wi-Fi Drivers are beeing initialized with different Arguments, which meanings i have yet to find out.

I just did a little StressTest yesterday to find out how far i can go with the Drive. CPU, RAM, Network, HDD, USB and so on. Unfortunately the Threadmanagement for the two Cores seems to have its Problems. Maybe its by Design, maybe its just inefficient. I am not sure yet.

But when i start a singlethreaded Task or a singlethreaded Benchmark for the CPU, the Load jumps from one Core to another every few seconds. Needless to say that CPU-Time gets lost in every Transition. WD put a lot of customization into the Kernel and the According Drivers. But once again i lack the necessary skills to do some optimization here. Overclocking the System was rather easy compared to such a task. I did try it with a not-OC’ed System, too. And it was rather worse.

So, MY Wi-Fi Wishlist aside, this would be a topic worth looking into.

Im still trying to gather everything. Once i am done i will upload it to github, i think.

BTW: haven’t had the Chance to look into the new FW Source. MayBe there are some improvements to the Kernel or Bootloader.

I have just ordered two IPEX RP-SMA Antenna Adaptors to lead out the Wi-Fi Antenna Connections and a “ultra low Power” Bluetooth to Serial Adaptor (UART). This way i won’t need to Attach a Cable to get Access to the console. But i will make Pictures of everything. Who knows, maybe someone finds it to be a good Idea :slight_smile:

1 Like

Hey,

Any progress on documenting this? I’d love to have a play.

Love the way you write with the humor interspersed within the story. Outstanding!

Best Regards,
Jim on the banks of the Suwannee River in beautiful White Springs, Florida, USA.

Did you ever create a how to?
I am trying to figure out how to tether the USB to my android using Easytether. I have already done it with openwrt on a little router. But I am struggling with this device. It would be cool to have it in one device.
I also have other one with a broken board. The the HDD connector is toast and I would like to boot from SD.
Your how to would be great. And allow me to salvage the broken one.
Thanks

Hello Friend, happy for read someone that win battle with wd wireless pro, I have one, and are very bad interface, I not use Debian or linux, I read many manuals, but I lost much.
i dont know how insert Debian into wd wireless pro unit, I try find tutorials and manuals but not find it, if can refer me how make this, thanks.

This guide seems to have worked for me:

good research and result Mate :slight_smile: I like this kind of things, edging the devices, rooting, doing them things that they are not ment to be produced. So could you please share the files and the doing order for this hack… I like the idea of a real PC smaller than my macmini and that portable… Please share ASAP. I found you, someother will later I bet…
Keep up the good work

my email address is sahfaruk@gmail.com