Hello!
Most of my inspiration came by looking at these pieces of information: (attached below)Originally Posted by Oyabun
What kind of hard hacking are you thinking about?
* BCM4704 Block Diagram
* BCM4704 System Diagram
Well besides the gpio pins, I2C bus, SPI bus, SD card, etc type hacks, (directly off wl500gp pcb tracks), the most promising thing, may be the ability of BCM4704 processor to handle three mini-PCI 2.3 peripherals.
Another way to explore would be the EBI (Expansion Bus Interface) route. Signals for this bus are presented to the flash memory chip (SPANSION S29GL064M), of course stealing them from the chip's pads seems extremely hard, but it might still be an option for just a couple of lines. And since extremely hard is still possible , one could even try an IDE connection if all necessary signals are found to be present and the firmware side of things in understood as well (that already sounds pretty complex to me).From Broadcom's BCM4704 Product Brief:
The PCI 2.3 host interface allows enumeration of three external PCI peripherals (more with external arbiter)
Other interesting things are the modem and audio codec’s as well as the two-port USB 1.1 host. Interesting these are, however, only if their respective signal/data lines are present somewhere on the pcb, since un-burying them from under the BGA seems highly unlikely, to stay optimistic.
Software-wise, access to the MAC (Multiply Accumulate) unit on-chip would be very useful to people who wish to hook up some sensors on the wl500gp and then use it to perform some DSP (digital signal processing) on the collected data.
Also software-wise, access to the IPSec Core and related hard-wired functions available in the BCM4704 (IPSec 3DES, SSL MAC, TLS HMAC, SSL/TLS DES/3DES, MD5/SHA-1 HASH, IPSec AES), would be very useful for some types of network applications.
All of the above require, inside knowledge of the processor core, usually found in a Programmer's Guide type document and in datasheets, for the software part, whereas for the hardware part, processor datasheets and router schematics would be needed. Without any of these documents in sight, it's gonna be pretty hard to attempt most of these modifications.
That's why I believe mini-PCI peripheral expansion is the most viable approach, given the available documentation.
PCI's, let's sum it up, we have: One for the PCI-to-USB bridge (VIA VT6212L), one more for the actual mini-PCI connector harbouring the wi-fi card, that's two, leaving room for (hopefully) one more! Plus all the signals for the PCI bus should be presented to the mini-PCI connector. That's only a guess however, I haven't actually checked to verify that, but still. The specifications for PCI and mini-PCI bus are at hand, so it will be a matter of (spare) time to verify it.
After verifying that all necessary signals are present and that the firmware (as is or modified) could handle such an addition, it might be possible to try and solder one more mini-PCI card connector on the existing pcb pads.
Many mini-PCI cards are available which could be used to offer additional functionality, provided the suitable driver exists, that is.
* mini-PCI to IDE and/or SATA controllers + Compact Flash (CF) Socket, (no USB bottleneck)
* mini-PCI to (a multitude of) serial ports extension cards
* mini-PCI GPS receiver module with extra serial ports
* mini-PCI 801.11a/b/g 400mW card
* more examples welcomed
A simple idea would be to add an extra dual band wi-fi card, transforming the router to a link, or even backbone node for wireless metropolitan networks. A GPS card would suit locative (location-aware) applications. The extra serial ports would be good for robotics or home automation and a direct mini-PCI to IDE/SATA/CF card would allow for file transfers at full speed, overcoming the USB bottleneck. I could go on daydreaming about possibilities for long...
Take a wl500gP, hook up some temp, humidity, pressure, wind-speed, rainfall, etc sensors over USB or serial ports and you get a remote, networked, weather-station. Or add some motors and motor drivers assortments, vision, GPS, batteries, sensors (speed, distance, temp, inertial, rotational, magnetic, etc) a few microcontrolers, quite some code, and voila: you have a networked mobile robot...
For the moment my preferred (and much more realistic) approach is to interface microcontrollers to the RS-232 and USB ports of the router. I'm planning to work with some PIC18F4550 with USB connection while some other PIC boards with rs-232 are already available and have plenty of things interfaced to them. Now I only need to set up a cross compiler for the wl500gP and write some code to get them to communicate with the router (and, hopefully, one day, attempt even native compilation). Some more code writting/porting will be needed to have the router perform some processing on the data collected through the uC's and plan some actions to execute on the devices interfaced to them in response, all while sending part of the data over lan/wi-fi. The birth of a simple robotics platform, indeed.
Following the various posts about the RS-232 console connection, and parper's post "Additional USB ports and Internal HD!", I performed the corresponding mod's, and now I have a very happy wl500gP with Oleg's firmware, 128MB ram, four onboard USB 2.0 ports and two RS-232 signal level serial ports.
I will post methods and findings soon!
Ideas, comments, suggestions are welcomed
Greetings to all and thanks for all the info's you are sharing,
inertial
Below are some very inspiring BCM4704 Diagrams from Broadcom's Product Brief, a picture of wl500gP's case following modification to house the extra two USB connectors, and a couple of pictures of the actual post mod pcb.