A nodejs usb bootloader server to boot BeagleBone into mass storage mode.

HI,
I’m a GSoC student with BeagleBoard.org this year. My project is to develop a GUI based usb flashing tool for BeagleBone hardware.
The tool comprises of two parts a nodejs usb bootloader server which tftps spl and uboot to boot it into mass storage mode and a flashing tool based on https://etcher.io project. Both finally packaged into a app using electron framework.
I’ve developed the usb node.js bootloader server, code here https://github.com/ravikp7/node-beagle-boot .
I want the BeagleBoard community to test this usb server. Currently I’ve tested it’s working on Ubuntu 16.04. On Windows 10, I’m having some issues with usb drivers, so testing on Windows is very neccessary especially on Windows 7,8.
I request all to test it on various platforms preferably first on Windows and OSX. Let me know any issues that you face.

Thanks
Ravi

HI,
I'm a GSoC student with BeagleBoard.org this year. My project is to
develop a GUI based usb flashing tool for BeagleBone hardware.
The tool comprises of two parts a nodejs usb bootloader server which tftps
spl and uboot to boot it into mass storage mode and a flashing tool based
on https://etcher.io project. Both finally packaged into a app using
electron framework.
I've developed the usb node.js bootloader server, code here
GitHub - ravikp7/node-beagle-boot: A node.js USB bootloader server for BeagleBone for booting it into mass storage mode .
I want the BeagleBoard community to test this usb server. Currently I've
tested it's working on Ubuntu 16.04. On Windows 10, I'm having some issues
with usb drivers, so testing on Windows is very neccessary especially on
Windows 7,8.
I request all to test it on various platforms preferably first on Windows
and OSX. Let me know any issues that you face.

Hello Ravi,

Seems like a really cool project, but you've made some assumptions in your
readme.md that anyone will know what the next steps are. So, if this
project is geared towards people who might have a hard time understanding
how to flash an eMMC, you've not given enough information as to how to
achieve said goal. For instance:

I'm running Windows 7 pro x64 on my system. Now . . .

Windows

   1. Clone this repo and cd into it.
   2. Connect BB through usb by holding down S2 (boot button).
   3. Install am335x usb drivers through Zadig <http://zadig.akeo.ie/&gt;\.
   4. Open Zadig, select Options -> List all devices. Select AM335x usb
   from list and install WinUSB driver.
   5. From admin power shell or cmd run:

npm install

npm start

It should now boot BB into usb mass storage mode.

Now what ? Point host machine to the beaglebone's IP address through a
browser ?

See, you've given a good explanation as to why this tool is needed, but you
have not fulfilled the goal of making this project any easier for
beginners. Additionally, in step 2 ". . .press S2 . . ." is alternate boot
mode. I could make a few assumptions, but I bet my initial assumption would
be wrong. You need to clarify that part because I expect this would cause
the Beaglebone to boot from USB ? Because you've not mentioned adding an
sdcard to the board. After that, step 3 is not at all clear. Quite
honestly, I've been using Beaglebones now for 4 years, and I could not tell
you, or anyone what Zadig *is*. Windows, at least in the case of Windows 7
will automatically install RNDIS driver from microsoft after a Windows
update or two.

So now, here is what I'm thinking, For a beginner, it's still easier to go
to etcher.io, write an image to an sdcard, and comment out one line in
uEnv.txt to make a flasher image. I think your project is a great idea, but
to enable beginners, you need to be more verbose in your documentation. As
it sits, what you have here is a great tool, that will probably enable
those of us who already know how to get this done through other means.

By the way, I would be willing to help you with testing. I have two Windows machines here on which I can test. 1 Windows 7 pro x64 machine, and 1 Windows 10 pro x64 machine.

With that said, I’m pretty busy, so the clearer your documentation is, the more likely I will be able to help you test, quicker.

HI,
I’m a GSoC student with BeagleBoard.org this year. My project is to develop a GUI based usb flashing tool for BeagleBone hardware.
The tool comprises of two parts a nodejs usb bootloader server which tftps spl and uboot to boot it into mass storage mode and a flashing tool based on https://etcher.io project. Both finally packaged into a app using electron framework.
I’ve developed the usb node.js bootloader server, code here https://github.com/ravikp7/node-beagle-boot .
I want the BeagleBoard community to test this usb server. Currently I’ve tested it’s working on Ubuntu 16.04. On Windows 10, I’m having some issues with usb drivers, so testing on Windows is very neccessary especially on Windows 7,8.
I request all to test it on various platforms preferably first on Windows and OSX. Let me know any issues that you face.

Hello Ravi,

Seems like a really cool project, but you’ve made some assumptions in your readme.md that anyone will know what the next steps are. So, if this project is geared towards people who might have a hard time understanding how to flash an eMMC, you’ve not given enough information as to how to achieve said goal. For instance:

I’m running Windows 7 pro x64 on my system. Now . . .

Windows1. Clone this repo and cd into it.

  1. Connect BB through usb by holding down S2 (boot button).
  2. Install am335x usb drivers through Zadig.
  3. Open Zadig, select Options → List all devices. Select AM335x usb from list and install WinUSB driver.
  4. From admin power shell or cmd run:
npm install

npm start

It should now boot BB into usb mass storage mode.

Now what ? Point host machine to the beaglebone’s IP address through a browser ?

See, you’ve given a good explanation as to why this tool is needed, but you have not fulfilled the goal of making this project any easier for beginners.

Hi William,
Thanks for showing interest in testing this project. But, you’re getting it wrong, the node.js server is not intended to be used by beginners, I’ll be developing a complete simple to use GUI based flashing tool to flash the BeagleBone hardware. The node.js usb bootloader server is an underlying part of the tool. It’s been just two weeks into coding, the server is complete. So, I was looking for testers here which I expect are already knowledgable about these stuff, so the documentation was pretty straight forward and again the documentation was not intended for beginners.

Additionally, in step 2 “. . .press S2 . . .” is alternate boot mode. I could make a few assumptions, but I bet my initial assumption would be wrong. You need to clarify that part because I expect this would cause the Beaglebone to boot from USB ? Because you’ve not mentioned adding an sdcard to the board.

Yes, USB booting.

After that, step 3 is not at all clear. Quite honestly, I’ve been using Beaglebones now for 4 years, and I could not tell you, or anyone what Zadig is. Windows, at least in the case of Windows 7 will automatically install RNDIS driver from microsoft after a Windows update or two.

For your concerns regarding Zadig, it’s a gui tool to install WinUSB drivers for usb devices, here am335x. This project utilises libusb library GitHub - libusb/libusb: A cross-platform library to access USB devices which requires those drivers to be installed in order to access the usb devices. I’ll update the documentation with this info. And I understand that this info should have been there to save your precious time.

So now, here is what I’m thinking, For a beginner, it’s still easier to go to etcher.io, write an image to an sdcard, and comment out one line in uEnv.txt to make a flasher image. I think your project is a great idea, but to enable beginners, you need to be more verbose in your documentation. As it sits, what you have here is a great tool, that will probably enable those of us who already know how to get this done through other means.

Final tool will be as easy as connecting BB through usb by holding boot button, selecting image to be flashed in tool, and clicking flash button and get flashing done without any configurations or modifications and no sd card. To know further about project working, see this project intro video https://goo.gl/recz8i
Quick tip: use the LTS release of node i.e. 6.11.0 to get things smooth while node modules installation. Let me know if you need further help. Happy testing :wink:
Thanks again.