Help - Search - Members - Calendar
Full Version: Stuffing Serial Bluetooth Module Inside C1k Casing
OESF Forums > General Forums > General Support and Discussion > Hardware Mods
Pages: 1, 2, 3, 4, 5, 6, 7, 8
0xDEADBEEF
I found an interesting device
http://www.newegg.com/Product/Product.asp?...N82E16833156046

Single dongle that does both wifi and bluetooth. I have downloaded windoze drivers from Trendnet website and it seems the wifi part uses Zydas ZD1211 chip.
0xDEADBEEF
Btw, this is my latest experiment

- el cheapo small usb hub
- airlink wifi dongle
- trendnet bt dongle (pdaxrom 2.4 kernel does not detect it ;-() it works in my desktop and in my laptop though
- 512mb flash drive

Click to view attachment

Click to view attachment

unfortunately zaurus does not have enough mojo to power all these devices together

but it works in my Vaio U3

maybe I can stuff this into my Vaio!
guylhem
QUOTE(0xDEADBEEF @ Apr 19 2006, 12:39 AM)
I found an interesting device
http://www.newegg.com/Product/Product.asp?...N82E16833156046

Single dongle that does both wifi and bluetooth. I have downloaded windoze drivers from Trendnet website and it seems the wifi part uses Zydas ZD1211 chip.
*


Interesting. Do you have one? If you can get it to work on a desktop linux machine (ideally with a 2.4 kernel), it could be made to work on the zaurus.

Guylhem
speculatrix
more at
http://www.trendware.com/products/TBW-103UB.htm

edit: shame it's not bluetooth 2.0 as well as 802.11a but then maybe I'm being too demanding!
0xDEADBEEF
QUOTE(guylhem @ Apr 19 2006, 03:12 AM)
Interesting. Do you have one? If you can get it to work on a desktop linux machine (ideally with a 2.4 kernel), it could be made to work on the zaurus.

Guylhem


Not yet.
I have to order it.
albertr
http://www.iral.com/~albertr/linux/zaurus/wireless/

was updated with new software. Nothing radical, just minor clean-up,
-albertr
Mjolinor
Finally managed to build a kernel. Bit of an epic.

Googled and come up with lots of ways to do this but I am sure there is only one correct way.

How do I put this kernel on? (SL-C3000)

If my kernel is stuffed can I easily recover or might it brick the Zaurus?

Just looking for some reassurance smile.gif
albertr
You can flash the kernel the same way you flash the Cacko ROM. Put the updater.sh from Cacko ROM on empty card. Copy your recently built zImage to this card and flash from it.
It could be a good idea to backup the content of your NAND chip first, just in case.
-albertr
Mjolinor
OK, kernel loaded.

More handholding please smile.gif

I have decided that this serial port is ttyS2 as ttyS1 seems to be IR and I assume ttyS0 is the wired serial port on the back.

If I type "hciattach /dev/ttyS2 csr 460800" then I get "Initialization timed out."
If I type "hciattach /dev/ttyS2 ericsson 460800" then I get my prompt back with no error messages.
Is this proving that the module is getting initialised OK? (it is an Ericsson module)

After this I type "hcid -f /etc/bluetooth/hcid.conf" then "sdpd" (I have no idea why)

Then "hcitool scan"

This gets me "Device is not available: Success"

Which isn't really what I was hoping for sad.gif

Am I heading the right way, what next?
Mjolinor
QUOTE(Mjolinor @ May 1 2006, 11:22 AM)
If I type "hciattach /dev/ttyS2 csr 460800" then I get "Initialization timed out."
If I type "hciattach /dev/ttyS2 ericsson 460800" then I get my prompt back with no error messages.
Is this proving that the module is getting initialised OK? (it is an Ericsson module)

*


No it isn't as I get the same response from ttyS1 and I don't have two Ericsson modules loaded. So, how do I tell it's there?

With my scope attached to TX on the motherboard, after boot the line is at 0v

After
hciattach /dev/ttyS0 ericsson 460800
and
hciattach /dev/ttyS2 ericsson 460800
the TX line stays at 0v

after
hciattach /dev/ttyS1 ericsson 460800
the TX line goes to 3.3 volts but there is no burst of data into the BT module from the motherboard.

This suggests to me that the connections are ttyS1. It is also pretty apparent to me that ttyS1 is used for the infra red as "cat /proc/tty/driver/serial"

returns
serinfo:1.0 driver:5.05c revision:Apr 30 2006
0: uart:PXA UART port:F8100000 irq:22 baud:460800 tx:5 rx:0 RTS|CTS|DTR|DSR|CD|RI
1: uart:PXA UART port:F8200000 irq:21 baud:460800 tx:0 rx:0 RTS|DTR
2: uart:PXA UART port:F8700000 irq:20 baud:460800 tx:0 rx:0 RTS|DTR

after I have used the hciattach command but after using the infra red send or receive in the settings tab the entry for ttyS1 is changed.

So it appears that I have IR and BT on ttyS1
albertr
BTUART is /dev/ttyS1.

You can check the content of /proc/tty/driver/serial, it should give you idea if speed was set right and how many bytes were sent/received and if there's any parity/frame/overrun errors. If you see many frame/parity errors for ttyS1, when there might be something wrong with wiring. Also, you have to use hardware flow control for H4 uart protocol (check hciattach options to make sure).

-albertr
albertr
SiR is wired to STUART, which should be /dev/ttyS2.

-albertr
Mjolinor
So how do I get over the IR also being on ttyS1
This is copied from an SSH session

QUOTE
# hciattach /dev/ttyS1 ericsson 460800
# cat /proc/tty/driver/serial
serinfo:1.0 driver:5.05c revision:Apr 30 2006
0: uart:PXA UART port:F8100000 irq:22 baud:460800 tx:5 rx:0 CTS|DSR|CD|RI
1: uart:PXA UART port:F8200000 irq:21 baud:460800 tx:0 rx:0 RTS|DTR
2: uart:PXA UART port:F8700000 irq:20 baud:460800 tx:0 rx:0


now, using the 10 hands that I have, I turn the Z over holdiong the battery in as ther eis no bottom on it smile.gif and click the IR receive icon in the settings tab and tell it to receive. Go back to my SSH seesion and :-

QUOTE
# cat /proc/tty/driver/serial
serinfo:1.0 driver:5.05c revision:Apr 30 2006
0: uart:PXA UART port:F8100000 irq:22 baud:460800 tx:5 rx:0 CTS|DSR|CD|RI
1: uart:PXA UART port:F8200000 irq:21 baud:9600 tx:0 rx:0 RTS|DTR
2: uart:PXA UART port:F8700000 irq:20 baud:460800 tx:0 rx:0
#


Does this not prove that the IR is on ttyS1?
Mjolinor
As you say (Albertr) it is in fact ttyS1. I don't know why using the the IR sets the TX on ttyS1 but if I cat "a file" >> /dev/ttyS1 I can watch it with my scope.

The problem is the reset as suggested earlier. According to teh datasheet there is no need for a power up sequence if the three power supplies are connected to a common V but it only respponds correctly if I reset it after power up.

It now scans and finds things so it would seem to be installed correctly, working kernel and so on. Now need to sort the power on off I think. I suppose it's actually best to do this mechanically as I willprobably be using this thing on aeroplanses and you can't beat a mechanical connection for being sure.
albertr
Good to hear that you have sorted it out! I'm using software power control via GPIO pin, which is IMHO more convenient than any hardware switch.

Not sure why IRDA applet in Cacko resets ttyS1 speed. Did you try to send/receive via IRDA after your modification? Does IRDA still work?

-albertr
Mjolinor
My not initialising problem is to do with the rise time of the power supply on the Zaurus. The spec. sheet for the BT module says reset at power on isn't needed and no power on sequence is required if the three power supply lines are commoned. This isn't what I was seeing so a closer look reveals that the power supply rise time has to be < 62 us and the actual rise time internally is > 200 us so that's why it isn't working without a reset.

This means that I either wire the reset or wire the PSU either through a transistor or a manual switch. Power supply makes more sense as powering it off is a requirement so I need an I/O line that's suitable, the ones in the battery compartment look favourite but I need some input on the software side or it's going to be a switch on the outside.

Input please.
albertr
On my page there's a link to the userland utility that I use to control the power thru GPIO pin.
Just change the pin number to the one you use, should be as easy as that.
-albertr
Mjolinor
I looked at that. It's the thought of compiling it smile.gif
I'll give it a go.
Mjolinor
Compiled fine. Being a lazy git I decided to try GPIO 84 so I didn't have to take the MB out of the top half.

Suffered from minor panic when met with a flashing green LED and naff all else, as soon as power is applied.

It would seem that if there is 10 k or less to ground on GPIO 84 when either the battery is put in or external power is applied the Z goes into some strange mode.

I couldn't get it to do anything though I didn't try too hard due to the "oh no I've trashed my Z" palpitations in my chest.
Mjolinor
Having decided that GPIO 84 aint going to cut it I need another one on the top of the board.

The BT module only works if I specify "noflow" during hciattach so CTS and RTS are not needed. Are they disab;ed in the modified serial driver?

Can I use one of these or is it unsafe because of the serial routines?

If I can use it what is it's I/O number?

Is there easy access on this side of the board to any other spare I/O line?

Is GPIO 35 available on this side?
albertr
There's #define in the serial.c file (look at the first few lines of the code). It controls whever CTS/RTS used as GPIO pins. The pin numbers are documented on my page.

It's strange that hardware flow control is not used in BlueZ for Ericsson ROK module. I thought that it's required for H4 UART protocol, but guess I was wrong... Did you try to transfer large amounts of data over BT link?

Sorry to hear that GPIO84 didn't work, I'll try to double-check pin 84 when open my Z next time.
-albertr
Mjolinor
I haven't tried transferring anything over it as yet so I don't know if the handshaking thing will be a problem.

Everything I have read says that handshaking is needed with teh Ericsson module but for sure if I don't disable I get no data transfer on the TX RX lines.
albertr
I would suggest to try some testing with transferring large amounts of data over the bluetooth link before deciding that you can get away without using hardware flow control.
-albertr
Lurker
from Albertr's Zaurus page:
QUOTE
While ZD1211 chipset supports all 802.11a/b/g freq's and modulations, the driver will work in 802.11b mode only if attached to USB 1.1 bus.
Are there any USB "keychain" dongles with open source drivers that can work in Wireless-G mode on a USB 1.1 bus? Even though the througput would be limited to below Wireless-B speeds, it is still usefull to have Wireless-G capabilities for scanning and G-only access points.

Would a bluetooth module operate at the same speed using btuart vs. USB? Does btuart mode support the same profiles as USB?

Could anyone provide a simplified connection diagram for those who are capable solderers, but do not posses the electronics knowledge? I wish to perform the USB OTG Power Domain and btuart bluetooth mods. The extra power would either go towards the external USB port or an internal wifi module (provided I can make space for one)
speculatrix
AlbertR,
I've now received some of the AML bluetooth modules and they are literally wafer thin - maybe slightly less than a millimetre thick. Do you think there's a chance that one could be squeezed into the gap under the CF card in a C3x00?

(assuming you'd buy one without the built-in antenna and run a very fine cable to an antenna fixed to the case)

Paul
albertr
QUOTE(Lurker @ May 22 2006, 06:46 PM)
Are there any USB "keychain" dongles with open source drivers that can work in Wireless-G mode on a USB 1.1 bus? Even though the througput would be limited to below Wireless-B speeds, it is still usefull to have Wireless-G capabilities for scanning and G-only access points.


It shouldn't be very difficult to modify ZyDAS's driver to work on b/g even when on USB1,1 bus. How good it would work is a different question. I'm not sure about other g-capable wifi usb chipsets like Ralink's.

Monitoring mode is a bit flaky with ZyDAS, at least with the current drivers.

QUOTE
Would a bluetooth module operate at the same speed using btuart vs. USB? Does btuart mode support the same profiles as USB?


Using the "de-sharped" serial driver, PXA270 works fine @ 961200 baud. That seems to be more than enough to cover BT 1.1 througput, even with BCSP packets overhead.
If you need 2.0 EDR speeds, you'll have to use usb.

As far as profiles go, they are implemented in modules' HCI firmware and in HCI bluetooth stack, so it's not interface-dependant.

QUOTE
Could anyone provide a simplified connection diagram for those who are capable solderers, but do not posses the electronics knowledge? I wish to perform the USB OTG Power Domain and btuart bluetooth mods. The extra power would either go towards the external USB port or an internal wifi module (provided I can make space for one)


What diagram you are looking for? For USB OTG power regulator all you need is just to replace one resistor. It's pictured on my page. For BTUART to serial BT module connection just connect TX to TX, RX to RX and if you need hardware flow control - CTS to CTS and RTS to RTS. Also connect VCC and GROUND to power module up. If module has a TTL-level RESET input, you can implement resetting circuit via some GPIO line.
-albertr
albertr
QUOTE(speculatrix @ May 23 2006, 04:36 AM)
AlbertR,
I've now received some of the AML bluetooth modules and they are literally wafer thin - maybe slightly less than a millimetre thick. Do you think there's a chance that one could be squeezed into the gap under the CF card in a C3x00?


Paul, I don't know since I don't have a C3x00. It might be easier for you to just open yours up and measure its internal spacing. Let us know if it does fit...
-albertr
Lurker
Albertr:
Thanks for the info! I browsed through the zd1211-dev list, and from what I could tell it indeed proved troublesome to enable 802.11g with USB 1.1. However, at this point I would be content to have "only" internal 802.11b and bluetooth.
I do not know how to translate the schematic for controlling power to individual modules. If it is not too much trouble, a diagram that shows the interconnection between modules, power regulator circuit and main board would be best.
albertr
There was a discussion about schemantics a few pages back. I'm not an electric engineer myself, Boris helped with schemantics. Basically, on his picture LOAD means the module itself. You can find GROUND in many places on Zaurus PCB, including OTG connector. However, beware that OTG connector's ground and +5V are protected from spikes with inductors, so some bouncing may occur. Not sure about possible implications, someone with more electrical knowledge would explain it better...

If you change the resistor in OTG power requlator, it can provide 500mA. I replaced the resistor with a 1K one, and it works fine - it has sufficient current for both ZD1211-based wifi and CSR BC02-Ext-based bluetooth modules at the same time. "3.3V" on Boris' picture means GPIO pin that controls the gate (base) of transistor.
-albertr
Lurker
Albertr:
Thanks again! I am now one step closer to attempting this mod. I am not ready to tackle it at this point, but hopefully within the next few weeks. I will post a diagram for approval, just to lessen the chance that I fry the Z. Of course, I would still take full responsibility in the result of failure.

In the meantime, I need to know if anyone is using these mods with OpenZaurus. If not, how difficult would it be to modify the software to work with OZ (2.6 kernel)?
I will be performing these mods on a C3000, so I do not have an empty microdrive space to work with, though there are other potential locations for module(s). However, I may need to attach external patch antennas to the module(s) for routing to the edge of the case of the Zaurus. Does anyone have any experience with this? Is it a simple matter of cutting or otherwise disconnecting the module's PCB antenna and soldering the antenna cable in its place?
Mjolinor
I used the 802.11 antenna from inside the screen of a broken laptop. They are all the same, a thin plastic PCB, like ribbon cable and it already has the coax soldered to it.
Lurker
Mjolinor:
Nice! Where on the Zaurus did you place the antenna? Have you done any before & after tests regarding reception? Also, I don't suppose the length of coax matters at such short distances(?)
Mjolinor
Not done any testing and I didnt actually use the coax. I soldered the antenna to the bluetooth unit directly, they are only as thick as a piece of paper.

I tried to find a pic on the net but I can't Ill take a picture of one of these tomorrow
speculatrix
QUOTE(albertr @ May 23 2006, 03:52 PM)
QUOTE(speculatrix @ May 23 2006, 04:36 AM)
AlbertR,
I've now received some of the AML bluetooth modules and they are literally wafer thin - maybe slightly less than a millimetre thick. Do you think there's a chance that one could be squeezed into the gap under the CF card in a C3x00?


Paul, I don't know since I don't have a C3x00. It might be easier for you to just open yours up and measure its internal spacing. Let us know if it does fit...
-albertr
*



I don't have a 3x00, I think I'd rather have an AlbertR-special-1000 with bt and wifi than a 3x00 without.. so I was hoping to establish whether such a thing were possible!
albertr
Ahh, sorry, I didn't know that you don't have a C3xxx... Anyways, with SD/MMC driver that supports large cards and price of 4GB cards now under $100, I really don't see any point of getting any C3xxx over C1000. In fact, my modded C1000 is almost perfect, my only wish would be 128MB of RAM.
-albertr
speculatrix
QUOTE(albertr @ May 25 2006, 11:38 PM)
Ahh, sorry, I didn't know that you don't have a C3xxx... Anyways, with SD/MMC driver that supports large cards and price of 4GB cards now under $100, I really don't see any point of getting any C3xxx over C1000. In fact, my modded  C1000 is almost perfect, my only wish would be 128MB of RAM.
-albertr
*


I am being greedy again... I am waiting for the 20GB microdrives to be available/affordable, then use the external CF slot for either GPRS modem or GPS nav cards, and the SD slot for temporary/removable storage...
hence I would want to minimise the impact of fitting additional components into the Z and not block the use of the CF slot.
albertr
I hacked an XFCE4 plugin to control power of my internal Bluetooth and WLAN modules from XFCE panel.

http://www.iral.com/~albertr/linux/zaurus/powerctl.html

-albertr
albertr
Updated http://www.iral.com/~albertr/linux/zaurus/wireless/ with information on I2C bus location (at least on C1000).
-albertr
Da_Blitz
Very nice, i can think of a few things to add to that bus now, i assume its a 3.3v i2c bus and not 5v

this could be handy to add another 2c io expander off
Da_Blitz
albertr have you come across gpio 18 at all' i have been looking at my 2700g video card hack and remebered that this is the only pin that i need to find
albertr
It looks like GPIO18 is available, it's just pulled high.
-albertr
Da_Blitz
Thank you, my search is now complete wink.gif

actually just hours ago i convinced myself that i should build my own pda from scratch bassed around freescales i.mx3 chip as i can both get them and get them cheaply whereas i now have to source the 2700g

anyway thanks again, could you send me some more info on where i can find it
Tom61
Are you saying you found a board with an iMX3 and a 2700G for little money? Your post has a typo that makes this hard to discern.
Da_Blitz
Sorry about that, this new info means a 2700G on any of the c*K series (1000,3000,3100,3200)

the iMX3 is a custom PDA idea as the 2700G chip is VERY hard to get. dont want to hijack this thread anymore so if you want more info then contact me direct or make another post
albertr
QUOTE(Da_Blitz @ Jun 4 2006, 01:51 AM)
anyway thanks again, could you send me some more info on where i can find it
*


I'll try to take some pix next time I open it up.
-albertr
Zuse
Hi guys,

followed your thread for a while and decided to join with my C1000.
I got the following idea and would like to read what you are thinking.

First as far as I understood there is a unused USB-host-port inside the Z.
Secondly there is a (for normal users) unused COM-port (unlike you like to do some deep hacking).
Thirdly there is a unused I2C-Bus.

My idea (most is nearly the same as proposed already wink.gif ) would be as followed. Use or create a tiny USB-hub. Maybe buy a tiny one and "cut off" everything unneeded like LEDs, Plugs (hard soldering the USB stuff), everything related to external power etc.

Buy a tiny Wifi-, a Bluetooth-, and a Flashmemory-Stick. Cut again everything which we do not need internally.

Solder everything together and attach it to the free USB-port.

Up to here it is more or less the same as Da_Blitz and albertr discussed already.

My next step would be the use of either the I2C or the COM port with a I/O Expander to create 3 I/O pins (maybe the COM itself can provide some pseudo I/O already).
This I like to do to save the generic GPIO (you never know for what they are needed wink.gif ).

Use one of these tiny ICs to switch the power to the different USB lines. (I saw one from Maxim with a bunch of additional features like current control etc.). Create a little logic circuit

In addition it should be easy to create a "driver" for a COM-based power-controller

Now I should be able to turn on memory, WLAN or bluetooth individual. If all turned off, the logic circuit will turn off the power to the USB-hub just to save juice.

Thats more or less my silly idea of a way how it could work. Any comments wink.gif

Zuse

CC. Maxim (this is no ad, I do not get money wink.gif ) shows tiny WLAN, Bluetooth, GPS etc. modules and ICs. Maybe one way to create a "professional" daughterboard to upgrade the Z.
albertr
Go for it. Post pix when it's done.
--albertr
Da_Blitz
Most usb hubs can control thier power ports anyway, so the io expander is only needed to turn off the hub

the patches should be in the 2.6 kernels, not sure about 2.4 as i dont really follow them

btw i read they "fixed" a power bug where they were allowing devices that draw to much power to do just that and now they fixed it there are some devices that the kernel wont allow to be powered up (i have a couple right here)
Zuse
Hi Da_Blitz,

QUOTE(Da_Blitz @ Jun 18 2006, 03:44 AM)
Most usb hubs can control thier power ports anyway, so the io expander is only needed to turn off the hub


Thats right but the just control that the single devices drain not to much current. What I need is a way to "unplug" (from the Z point of view) unused devices. Since they are fixed inside my Z, I need a way to control wether I like to power them or not. The easiest would be to "cut" the USB power lines to simulate the unplug of a device.


:albertr For sure I will post pix biggrin.gif

Greetings

Zuse
Da_Blitz
Tahts exactly what the usb hubs can do wink.gif they can switch off the power totaly to a port if i rimeber corectsy ethier that or they allow low current (less than a miliamp) to detect when the old device is pulled out and a new one is plugged in

i would try it at home on a 2.6.16 kernel, hunt throgh the /sys tree for the file
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2014 Invision Power Services, Inc.