Poulsbo USB Client Background:
- The Poulsbo USB Client utilities, provided by Intel, are reference
implementations which are released as open source code.
- This reference implementation is not intended to cover all possible
use cases.
- ODMs and OSVs are expected to customize the reference implementation
to meet their specific needs.
The use cases presented in this note, describe the behavior of the
USB-Client reference implementation and discuss the design points which
ODMs and OSVs can take advantage of to customize their implementations.
Overview of Poulsbo USB Client modules, and their basic operation:
1) Linux Poulsbo USBC controller driver
2) Patches to Mass Storage gadget driver and RNDIS gadget driver.
3) Linux client utility. Basic behavior of Linux client utility is:
- First loads Mass Storage Gadget Driver. Backing store designated
by
mass storage driver module load parameter.
- Unload Mass Storage Driver and load RNIDS when "hacked SCSI
command"
received from Host utility.
- Start DHCP server. Get IP address through DHCP for MID client.
(Plan to
change this to ARP in the future to support multiple MID clients.)
- Provide options for user to select shared folder and change access
rights.
Save user selections in self-defined configure file.
- Start Samba server with a new Samba configure file. Include
"self-defined"
config file in Samba config file, so user selected folder is
shared.
4) Linux host utility: Basic behavior:
- Detect client side is in mass storage device mode. Send "hacked
SCSI command"
to client.
- Get IP address for host through DHCP (later ARP).
- Get shared folders through Samba.
- Pop up File Browser to show client side shared folders.
Windows host Utilities developed to work with USB Client:
5) Windows host installer. Expected to be in client shared backing
file.
- After USB client is plugged into host, host system auto-runs host
installer.
- Host installer copies host wizard to host system if host wizard is
not
already installed.
- Host installer starts host wizard.
6) Windows host wizard
- Send the "hacked SCSI command" to client.
- Get IP address from host through DHCP (later ARP).
- Get shared folders through Samba (NetBios).
- Pop up File Browser to show client side shared folders.
Use Case Scenarios:
Scenario #1: MID device connected to Windows System which does not have
USB Host Wizard/Utility installed:
- MID connects to Host in Mass Storage mode, and exposes one VFAT
partition.
- The VFAT partition has USB Client utilities and MID shared files.
- A folder opens on Host PC showing the VFAT partition.
- User may move files between to machines using Host's file manager.
- Or, depending on Host configuration, the Host may execute the Windows
autorun file on the MID VFAT partition, and autoinstall the USB Host
Wizard/Utility.
Scenario #1 Notes:
- The VFAT partition may be either a device or an image file. See
USB Client README for link to instructions on creation of image
file.
- VFAT partition is designated when loading the mass storage gadget
driver as a module parameter.
For example: modprobe g_file_storage file=/dev/had
Scenario #2: Host is a MID running Linux
Assumptions:
- Host side config utility will not support auto-run/auto-play
capabilities
- Host side utility is preinstalled on Host MID
- On client-side MID, user selects a single folder to be shared over
USB Client
link.
- Client-side MID is connected to another MID via USB client cable.
- Client-side MID starts and loads Mass Storage gadget driver.
- Host-side sends "hacked SCSI command" to client.
- Client-side unloads Mass Storage gadget driver and starts RNDIS
gadget driver.
- Host-side MID connects to RNDIS device
- Host-side MID and Client-side MID establish RNDIS TCP/IP link.
- Host-side config utility, mounts shared folder from client MID.
- Host-side opens window to shared folder.
Scenario #3: MID device connected to Linux System which does not have
USB Host Wizard/Utility installed:
- Linux Host side utility must be manually installed on the host.
- Then it should look like scenario #2.
Scenario #3 Note:
- If the Linux host is setup to support auto-install from the MID
mass
storage device, then the Scenario #1 behavior on Windows can be
duplicated.
Customization Options:
- Folders exported by RNDIS connection:
* A text config file on the client MID determines which folders
are exported.
* This config file could be preset to share specific folders by
OSV/ODM.
* Since this config file is added to the Samba config file, once
RNDIS
is started, changing the folders being exposed would require
interaction
with Samba.
* Applications could update the USB Client config file, but if the
USB
client RNDIS connection is already active, they would also have
to
update Samba.
- Client utility behavior
* Client side utility controls automatic setup of RNDIS
connection, selection
of folders to be exported, and exporting the folders over RNDIS.
* For a locked down device, such as iPod Touch, where the user
does not
see the filesystem, the client side utility breaks this model.
* Hence the Client side utility, must be modified, so it does not
present a user interface.
- Host side behaviors
* Host side behaviors are subject to the Host side configuration,
which
is beyond the control of the USB Client utilities. For example:
autorun may be disabled on the host, then autoinstall of the
USB Client Host Utility cannot happen.
* OSV/ODMs need to document their Host system configuration
expectations,
and communicate these expectations to their MID customers.
Don Johnson
Ultra-Mobility Group
Intel Corporation
Office: 503-712-9898
[EMAIL PROTECTED]
--
Ubuntu-mobile mailing list
[email protected]
Modify settings or unsubscribe at:
https://lists.ubuntu.com/mailman/listinfo/ubuntu-mobile