Editing N900 Hardware USB

Warning: You are not logged in. Your IP address will be recorded in this page's edit history.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
-
The USB connector on the [[Nokia N900|N900]] is a micro-b connector, as now required in European and Chinese markets, under the [http://en.wikipedia.org/wiki/Universal_Charger_Solution#Universal_Charging_Solution|new scheme to make all phone charger sockets identical].
+
The USB connector on the n900 is a micro-b connector, as required in european and chinese markets, under the new scheme to make all phone charger sockets identical.
-
==USB implementation==
+
=USB socket=
-
The N900 seems initially to have been designed to be capable of acting as a USB host, or implementing OSG mode. This would have allowed keyboards, mice, and other peripherals to be plugged in.
+
=USB implementation=
 +
The n900 seems initially to have been designed to be capable of acting as a USB host, or implementing OSG mode. This would have allowed keyboards, mice, and other peripherals to be plugged in.
-
The USB port with embedded host mode could not be certified, as the OTG drivers were not ready. (see [http://talk.maemo.org/showthread.php?p=643577#post643577] last block).
+
This was changed relatively short time before release, the micro-AB USB receptacle was changed to be micro-B, and the host functionality was officially removed - in order to comply with the USB standard - it could not get certification as a standard USB port with embedded host mode, while not all the necessary OTG drivers were ready for showtime (see [http://talk.maemo.org/showthread.php?p=643577#post643577] last block).  
-
 
+
-
This lead to the the micro-AB USB connector being replaced by a micro-B, and the host functionality being officially removed short time before launch.
+
Lacking certification would have a large number of issues, from some operating systems requiring certification before allowing drivers to be distributed, to legal compliance with the USB charger specs - it would technically not be a USB port.
Lacking certification would have a large number of issues, from some operating systems requiring certification before allowing drivers to be distributed, to legal compliance with the USB charger specs - it would technically not be a USB port.
-
===The Chips===
+
==The Chips==
-
 
+
There are four chips involved in the USB subsystem.
There are four chips involved in the USB subsystem.
-
 
+
===SoC===
-
====SoC====
+
-
 
+
The System-on-a-chip is the main processor on the n900.
The System-on-a-chip is the main processor on the n900.
This is the [http://focus.ti.com/docs/prod/folders/print/omap3530.html  TI omap3430]
This is the [http://focus.ti.com/docs/prod/folders/print/omap3530.html  TI omap3430]
 +
===Gaia===
 +
The TWL4030[http://wiki.maemo.org/N900_Hardware_Power_management/I2C] is a TI companion chip to the SoC
 +
===USB battery charger===
 +
The [http://focus.ti.com/docs/prod/folders/print/bq24150.html bq24150] charger from TI is quite a flexible charger.
 +
It, along with the PHY chip - support charging without the intervention of the SoC when the system is charging from a completely dead battery.
 +
The PHY chip detects a charger (shorted D+ and D- pins) and the charger uses this information to charge more rapidly.
-
====Gaia====
+
It also features reverse boost mode - which enables power to be supplied to a USB device connected to the n900.
-
The [[N900_Hardware_Power_management/I2C|TWL4030]] is a TI companion chip to the SoC
+
===USB Phy===
 +
The [http://www.nxp.com/ NXP] isp1707a is used as the USB PHY chip. [http://www.spinics.net/lists/linux-usb/msg25167.html].
 +
This rights to this part have been bought by ST-Ericson and some information is [http://www.stericsson.com/sales_marketing_resources/USB_transceiverBR_1.pdf available in a brief marketing sheet].
-
====USB battery charger====
+
There is no published datasheet for this chip.
 +
It may be available under another name.
-
The [http://focus.ti.com/docs/prod/folders/print/bq24150a.html bq24150a] charger from TI is a flexible charger. It, along with the PHY chip - support charging without the intervention of the SoC when the system is charging from a completely dead battery. The PHY chip detects a charger (shorted D+ and D- pins) and the charger uses this information to charge more rapidly.
+
==The Circuit==
-
It also features reverse boost mode - which enables power to be supplied to a USB device connected to the N900. (up to a limit of 200mA)
+
* The SoC has the USB protocol controller - this is the 'high level' controller - it implements most of the USB protocol.
-
For more information see [[N900 Hardware Battery Charger]]
+
* The PHY (physical layer) chip connects to the world through the USB socket. This is not the normal companion chip - but the NXP part, and is connected to the SoC via a standard ULPI interface. It does the very lowest level USB hardware protocol. Also it detects chargers (by sensing D+/D- short). It also has a connection to VBUS, via a 1k resistor, to do certain probing.
-
====USB Phy====
+
* The bq24150 Battery charger. This is connected to the battery, and the PHY chip, as well as to the SoC though I2C. It handles (with the PHY chip) charging from dead. It also implements boost mode, to enable powering things through the USB socket. Of course it detects when external VBUS is applied.
-
The [http://www.nxp.com/ NXP] isp1707a is used as the USB PHY chip. [http://www.spinics.net/lists/linux-usb/msg25167.html]. This rights to this part have been bought by ST-Ericson and some information is [http://www.stericsson.com/sales_marketing_resources/USB_transceiverBR_1.pdf available in a brief marketing sheet].  
+
* Gaia. The TWL4030 [http://wiki.maemo.org/N900_Hardware_Power_management/I2C]is used to sense the value of the ID pin. It also has a connection to VBUS, to power up the device on charger insertion and probably also to inform a running system about changes in VBUS state.
-
There is no published datasheet for this chip. It may be available under another name.
+
==The Software==
-
A reasonably similar chip (compare chips: [http://www.ebv.com/fileadmin/products/Products/ST-Ericsson/Flyer_USB_Transceivers_1.pdf]) is the 1704 which has a datasheet [http://www.stericsson.com/technical_documents/CD00222700.pdf] 
+
* BME - the battery managment entity. This has its hands in everything, especially the bq24150, and is split into
 +
** BME - kernel
 +
** BME - userspace
-
Another equivalent chip seems to be the https://www.startpage.com/do/search?query=FUSB2500 - see http://talk.maemo.org/showthread.php?p=643577#post643577
+
* Kernel driver.
 +
** This seems to be a partially implemented OTG driver for the initial design of the n900, with OTG mode partially implemented, assuming that the twl4030 would be used as the USB PHY. It seems to have been modified only to the extent required to make the NXP PHY work as a replacement.
-
For more information see [[N900 Hardware USB PHY]]
+
=Host mode prospects.=
-
===The Circuit===
+
A USB OTG controller would normally switch between host and device mode (initially) using the ID pin, to detect if it's at the A or B-side of a OTG cable.
-
* The SoC has the USB protocol controller - this is the 'high level' controller - it implements most of the USB protocol. This is a [http://www.mentor.com/products/ip/usb/usb20otg/ Mentorgrafix MUSBMHDRC-core] IntelectualProperty function block licenced for the OMAP.
+
Initially it was claimed that ID is not connected externally, and that this made USB host mode impossible.
-
* The PHY (physical layer) chip connects to the world through the USB socket. This is not the normal companion chip - but the NXP part, and is connected to the SoC via a standard ULPI interface. It does the very lowest level USB hardware protocol. Also it detects chargers (by sensing D+/D- short). It also has a connection to VBUS, via a 1k resistor, to do certain probing.
+
-
* The [[N900 Hardware Battery Charger|bq24150a Battery charger]]. This is connected to the battery, and the PHY chip, as well as to the SoC though I2C. It handles (with the PHY chip) charging from dead. It also implements boost mode, to enable powering things through the USB socket. Of course it detects when external VBUS is applied.
+
-
* Gaia. The [[N900_Hardware_Power_management/I2C|TWL4030]] is used to sense the value of the ID pin. It also has a connection to VBUS, to power up the device on charger insertion and inform a running system about changes in VBUS state. Though TWL4030 has a function similar to PHY chip as well, the original design using this function had to change as early chip revisions had problems with charger detection (so the rumour). Driver sourecode is full of cruft from that original design.
+
-
===The Software===
+
However, similar device datasheets indicate that the ID pin is used on hardware that supports it to switch between host and device mode.
-
* [[N900 Software BME|BME]] - the battery managment entity. This has its hands in everything, especially the bq24150a, and is split into
+
But, importantly, the ID pin does nothing directly to the state of the PHY. It simply informs the CPU of the state of the ID pin, and leaves the driver to properly configure the chip (nota bene, only for OTG, and only for determining the inital state).
-
** charger detection (via PHY) in kernel MUSB_HDRC driver, exposing /sys/devices/platform/musb_hdrc/charger
+
-
** BME - userspace driver for the charger chip, as well as monitoring battery voltage through Gaia.
+
-
** Hald-addon-bme - a small helper program to interface between HAL and BME.
+
-
* Kernel driver.
+
So, if the kernel can be altered to ignore this pin - which should be trivial if there is host mode support for the chip in the kernel - then host mode works.(the related sourcecode is to be found here:[http://mxr.maemo.org/fremantle/source/kernel/drivers/usb/musb/musb_core.c#2010], a 'echo host >mode' should work if the kernel driver wasn't crippled in some strange way)
-
** This seems to be a partially implemented OTG driver for the initial design of the N900, with OTG mode partially implemented, assuming that the twl4030 would be used as the USB PHY. It seems to have been modified only to the extent required to make the NXP PHY work as a replacement.
+
-
==Host mode details.==
+
The current understanding by several people who are working on USB host mode is:
-
Host mode works, see [http://talk.maemo.org/showthread.php?p=901888#post901888 this thread] Mohammad started on talk.maemo.org, when releasing first beta of a package comprising of a hostmode patched kernel build by Paul Fertser with support of h-e-n team, and a lean GUI built by Mohammad. The basic functionality seems to work fine.
+
The USB port can supply power - at least 200mA (as demonstrated here:[http://talk.maemo.org/showthread.php?p=588950#post588950]). This is plenty for many devices - mice and keyboards.
-
+
-
A [[N900_Hardware_USB_Host|user friendly implementation]] that makes it easy to use host mode needs a lot more than this, e.g. proper automounting, clean unmounting and sync, drivers for all kinds of peripherals etc.
+
-
A USB OTG controller would normally switch between host and device mode (initially) using the ID pin, to detect if it's at the A or B-side of a OTG cable.  
+
It seems likely that a relatively simple kernel change should enable USB hostmode - http://focus.ti.com/lit/ug/spruf98d/spruf98d.pdf - search for FORCE_HOST - there may well be other cleaner solutions.
-
Initially it was claimed that ID is not connected externally, and that this made USB host mode impossible.
+
A possibly related errata is detailed at 3.1.3 in [http://focus.ti.com/lit/er/sprz278d/sprz278d.pdf this document] - this, and other erratas may or may not cause issues with implementing host mode.
-
While this is mostly correct, it needs some exemplification:
+
=USB socket=
-
* the ID pin is not connected to PHY, but it is connected to GAIA
+
It seems that there is a USB socket hardware issue on some [[N900]] ...
-
* MUSB-core has a hw statemachine that reacts on a telegram from PHY, telling MUSB-core about ID pin grounded and to enter OTG_A hostmode now.
+
-
* Other PHY chips (e.g. in N810) have a command to make them send this telegram, so you can switch MUSB-core to hostmode under software control (go figure!). 1707 is missing this function.
+
-
* There is apparently no way to tell MUSB-core directly to switch to hostmode in a natural way.
+
-
* However there is a bit in MUSB-core registers called FORCE_HOST, which is switching MUSB-core into a semi-lobotomized test mode and allowed us to implement h-e-n.
+
-
===the following text needs update, it doesn't represent current state of investigation results anymore (corrections in ''(italic)'')===
+
May this depends on the build date, can you help and report details on your broken device :
-
However, similar device datasheets indicate that the ID pin is used on hardware that supports it to switch between host and device mode.
+
* http://talk.maemo.org/poll.php?do=showresults&pollid=339
-
But, importantly, the ID pin does nothing directly to the state of the PHY. It simply informs the CPU ''(the MUSB-core)'' of the state of the ID pin, and leaves the driver to properly configure the chip (nota bene, only for OTG, and only for determining the inital state).
 
-
So, if the kernel can be altered to ignore this pin - which should be trivial if there is host mode support for the chip in the kernel ''(the hw statemachine in MUSB-core won't play nice with whatever kernel does to enable hostmode in a "normal" way)''- then host mode works.(the related sourcecode is to be found here:[http://mxr.maemo.org/fremantle/source/kernel/drivers/usb/musb/musb_core.c#2010], a 'echo host >mode' should work if the kernel driver wasn't crippled in some strange way)''(h-e-n kernel hostmode now is working like this, but still needs another 'echo Fx >/proc/drivers/musb-hdrc' where 'x' is depending on speed. The kernel is "crippled" in a way it can not send a command to PHY to switch to hostmode, as the 1707 '''seems''' doesn't support this - further investigation needed, maybe it has this command but it isn't documented. Or we can spoof this command rsp the resulting telegram)''
+
No reason to panic most users are not affected and it could be trivial to prevent or repair once investigated by some diy hackers...
-
The current understanding by several people who are working on USB host mode is:
+
=== what to do ? ===
-
The USB port can supply power - at least 200mA (as demonstrated here:[http://talk.maemo.org/showthread.php?p=588950#post588950]). This is plenty for many devices - mice and keyboards.
+
Please fill ( template : nickname : build date ; SN  ; contact url or email ; notes ) , also tell hw version (" sysinfo-tool -g /device/hw-version" )
-
It seems likely that a relatively simple kernel change should enable USB hostmode - http://focus.ti.com/lit/ug/spruf98d/spruf98d.pdf - search for FORCE_HOST - there may well be other cleaner solutions. ''(h-e-n is exploiting this. About the "relatively simple" part that's up to your discretion)
+
* Ha... (TBC)
-
''
+
* H...P... (TBC) http://talk.maemo.org/showthread.php?p=549339#1
 +
* Sh.... (TBC)
 +
* Z...n (TBC) : http://talk.maemo.org/showthread.php?p=548915#post548915
 +
* T... : http://tabulacrypticum.wordpress.com/2009/12/13/connecting-on-the-surface-an-n900-risk/
 +
* n... : http://talk.maemo.org/showthread.php?p=550378#post550378
 +
* ... : http://talk.maemo.org/showthread.php?p=550704#post550704
 +
* ...
-
A possibly related errata is detailed at 3.1.3 in [http://focus.ti.com/lit/er/sprz278d/sprz278d.pdf this document] - this, and other erratas may or may not cause issues with implementing host mode.
+
Also answers polls :
 +
 
 +
* http://talk.maemo.org/showthread.php?p=548177
 +
* http://talk.maemo.org/showthread.php?t=37107
 +
 
 +
 
 +
=== Solution ===
-
==USB socket==
+
* Waranty :http://discussions.europe.nokia.com/t5/Maemo-Devices/Nokia-responds-to-reports-about-the-N900-micro-usb-port-getting/td-p/629019
 +
* DIY : may void Warranty ? http://talk.maemo.org/showthread.php?p=540344#post540344
 +
* Repair :  http://www.nokia.com/repair
 +
* Replace by a fixed one : http://www.astel.be/Les-Nokia-N900-suivants-tardent-defaut-de-fabrication-au-micro-USB_3568
 +
* External charger : http://talk.maemo.org/showthread.php?t=45887
-
{{main|N900 Hardware USB Socket}}
+
=== Misc ===
-
===Compatible devices===
+
* Please Avoid FUD, not sure it will help : http://slashdot.org/submission/1180314/Nokia-N900-Hardware-failure---USB-port-falling-off
-
{| class="wikitable sortable"
+
* http://img2.pixhost.org/images/668/1649730_img_0366_edit.jpg
-
|+ Compatible USB devices
+
* data sheet : http://www.hirose.co.jp/cataloge_hp/e24200011.pdf
-
|-
+
* hardware version : http://talk.maemo.org/showthread.php?t=46314&page=3
-
! USB device name
+
-
! Status
+
-
! class="unsortable" | Additional information
+
-
! Additional driver needed
+
-
! class="unsortable" | Discussion link
+
-
|-
+
-
| Edimax EU-4207 || Working || no problems found || <code>no</code> || http://talk.maemo.org/showthread.php?t=66667
+
-
|-
+
-
| ZTE-AC2766 || Working || no problems || <code>no, uses usbserial.ko</code> || http://talk.maemo.org/showpost.php?p=1198785&postcount=13
+
-
|-
+
-
|}
+
-
[[Category:N900 Hardware]]
+
[[Category:N900_Hardware]]

Learn more about Contributing to the wiki.


Please note that all contributions to maemo.org wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see maemo.org wiki:Copyrights for details). Do not submit copyrighted work without permission!


Cancel | Editing help (opens in new window)

Templates used on this page: