Post
Topic
Board CPU/GPU Bitcoin mining hardware
Re: Run full Bitcoin node from a USB device connected to a router.
by
Odi
on 16/11/2012, 02:53:35 UTC
I want to run a full Bitcoin node (including a whole up-to-date blockchain) from a USB-powered device connected to the router.

Ideally one USB port should be used to run and power the device/s, but it can be two ports.

This far, I had searched and only aware of another (DD-WRT flashable) router with a USB drive or phone/berry device connected to it which is not a solution.

In the DD-WRT solution, you are simply using the USB drive as a storage device.  Initiating connections to other nodes, downloading / uploading the blockchain, and verifying that blocks satisfy the hashes are performed by the Broadcom (MIPS) CPU in the router.  DD-WRT is simply an OS with many router features that the Broadcom CPUs can understand, similar to how Mac / Windows / Linux are OSes for the Intel / AMD CPUs.  Usually, you can take Linux source code and compile with MIPS as the target architecture, then run it in DD-WRT.

I want to use a proprietary-softwared Technicolor routers, which allow USB devices to be connected as a network storage. If the device I need is using wireless or a LAN port it should be okay as long as it gets all its power from the router (which will be modified to always run in a full power mode).

Simply plugging in a USB storage device with the blockchain on it does nothing.  You need the CPU to process commands to and from that blockchain.  It sounds like you have two choices: 1. Rewrite the code to reduce memory usage and compile for MIPS, or 2. Have an external CPU like the Raspberry Pi or a phone to do the CPU work.

Here is an elaboration on choice 1 based on my work on rooting and getting apcupsd running on a NAS running busybox:

  • Root your router, once you get shell access at busybox, you do not have to install DD-WRT but can just use the default OS already loaded
  • Install Ubuntu somewhere and compile bitcoin for MIPS
  • Try to run it with your shell access
  • Make changes in code and recompile to reduce memory usage