N900 Hardware USB

(Host mode prospects.)
(wikify slightly)
Line 1: Line 1:
-
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.
+
The USB connector on the [[Nokia N900|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 socket=
+
==USB implementation==
-
=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 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).  
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).  
Line 12: Line 11:
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.
 
-
It also features reverse boost mode - which enables power to be supplied to a USB device connected to the n900.
+
====Gaia====
-
===USB Phy===
+
The [[N900_Hardware_Power_management/I2C|TWL4030]] is a TI companion chip to the SoC
-
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].
+
-
There is no published datasheet for this chip.
+
====USB battery charger====
-
It may be available under another name.
+
-
==The Circuit==
+
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.
-
* The SoC has the USB protocol controller - this is the 'high level' controller - it implements most of the USB protocol.
+
It also features reverse boost mode - which enables power to be supplied to a USB device connected to the N900.
-
* 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==
+
===The Circuit===
-
* BME - the battery managment entity. This has its hands in everything, especially the bq24150, and is split into
+
* The SoC has the USB protocol controller - this is the 'high level' controller - it implements most of the USB protocol.
 +
* 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 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.
 +
* 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 probably also to inform a running system about changes in VBUS state.
 +
 
 +
===The Software===
 +
 
 +
* [[N900 Software BME|BME]] - the battery managment entity. This has its hands in everything, especially the bq24150, and is split into
** BME - kernel
** BME - kernel
** BME - userspace
** BME - userspace
-
 
* Kernel driver.  
* 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.
+
** 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 prospects.=
+
==Host mode prospects.==
-
It seems that host-mode can be made to work - see http://talk.maemo.org/showpost.php?p=650145&postcount=808 for a report on a n900 detecting some USB peripherals. (though not having drivers for them - which is just simple compilation).
+
It seems that host-mode can be made to work - see http://talk.maemo.org/showpost.php?p=650145&postcount=808 for a report on a N900 detecting some USB peripherals. (though not having drivers for them - which is just simple compilation).
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.  
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.  
Line 74: Line 73:
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.
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.
-
=USB socket=
+
==USB socket==
-
It seems that there is a USB socket hardware issue on some [[N900]] ...
+
 
 +
It seems that there is a USB socket hardware issue on some N900s…
May this depends on the build date, can you help and report details on your broken device :
May this depends on the build date, can you help and report details on your broken device :
Line 114: Line 114:
* Please Avoid FUD, not sure it will help : http://slashdot.org/submission/1180314/Nokia-N900-Hardware-failure---USB-port-falling-off
* Please Avoid FUD, not sure it will help : http://slashdot.org/submission/1180314/Nokia-N900-Hardware-failure---USB-port-falling-off
-
 
* http://img2.pixhost.org/images/668/1649730_img_0366_edit.jpg
* http://img2.pixhost.org/images/668/1649730_img_0366_edit.jpg
* data sheet : http://www.hirose.co.jp/cataloge_hp/e24200011.pdf
* data sheet : http://www.hirose.co.jp/cataloge_hp/e24200011.pdf

Revision as of 08:32, 10 May 2010

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.

Contents

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 [1] 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.

The Chips

There are four chips involved in the USB subsystem.

SoC

The System-on-a-chip is the main processor on the n900. This is the TI omap3430

Gaia

The TWL4030 is a TI companion chip to the SoC

USB battery charger

The 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.

It also features reverse boost mode - which enables power to be supplied to a USB device connected to the N900.

USB Phy

The NXP isp1707a is used as the USB PHY chip. [2]. This rights to this part have been bought by ST-Ericson and some information is available in a brief marketing sheet.

There is no published datasheet for this chip. It may be available under another name.

The Circuit

  • The SoC has the USB protocol controller - this is the 'high level' controller - it implements most of the USB protocol.
  • 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 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.
  • Gaia. The 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 probably also to inform a running system about changes in VBUS state.

The Software

  • BME - the battery managment entity. This has its hands in everything, especially the bq24150, and is split into
    • BME - kernel
    • BME - userspace
  • 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.

Host mode prospects.

It seems that host-mode can be made to work - see http://talk.maemo.org/showpost.php?p=650145&postcount=808 for a report on a N900 detecting some USB peripherals. (though not having drivers for them - which is just simple compilation).

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.

Initially it was claimed that ID is not connected externally, and that this made USB host mode impossible.

However, similar device datasheets indicate that the ID pin is used on hardware that supports it to switch between host and device mode.

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).

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:[3], a 'echo host >mode' should work if the kernel driver wasn't crippled in some strange way)

The current understanding by several people who are working on USB host mode is:

The USB port can supply power - at least 200mA (as demonstrated here:[4]). This is plenty for many devices - mice and keyboards.

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.

A possibly related errata is detailed at 3.1.3 in this document - this, and other erratas may or may not cause issues with implementing host mode.

USB socket

It seems that there is a USB socket hardware issue on some N900s…

May this depends on the build date, can you help and report details on your broken device :


No reason to panic most users are not affected and it could be trivial to prevent or repair once investigated by some diy hackers...

what to do ?

Please fill ( template : nickname : build date ; SN  ; contact url or email ; notes ) , also tell hw version (" sysinfo-tool -g /device/hw-version" )

Also answers polls :


Solution

Misc