Data di bus USB disalurkan dengan cara mendahulukanLeast Significant Bit(LSB). Paket-paket USB terdiri dari data-data berikut ini:
Semua paket harus diawali dengan data sync. Sync adalah data 8 bit untuk low dan full speed atau data 32 bit untuk high speed yang digunakan untuk mensinkronkan clock dari penerima dengan pemancar. Dua bit terakhir mengindikasikan di mana data PID dimulai.
- PID (Packet Identity/Identitas paket)
Adalah field untuk menandakan tipe dari paket yang sedang dikirim. Tabel dibawah ini menunjukkan nilai-nilai PID:
| Group | Nilai PID | Identitas Paket |
|---|
| Token | 0001 | OUT Token |
| Token | 1001 | IN Token |
| Token | 0101 | SOF Token |
| Token | 1101 | SETUP Token |
| Data | 0011 | DATA0 |
| Data | 1011 | DATA1 |
| Data | 0111 | DATA2 |
| Data | 1111 | MDATA |
| Handshake | 0010 | ACK Handshake |
| Handshake | 1010 | NAK Handshake |
| Handshake | 1110 | STALL Handshake |
| Handshake | 0110 | NYET (No Response Yet) |
| Special | 1100 | PREamble |
| Special | 1100 | ERR |
| Special | 1000 | Split |
| Special | 0100 | Ping |
|
Ada 4 bit PID data, supaya yakin diterima dengan benar, 4 bit di komplementasikan dan diulang, menjadikan 8 bit data PID. Hasil dari pengaturan tersebut adalah sebagai berikut.
| PID0 | PID1 | PID2 | PID3 | nPID0 | nPID1 | nPID2 | nPID3 |
|
Bagian alamat dari peralatan di mana paket digunakan. Dengan lebar 7 bit, 127 peralatan dapat disambungkan. Alamat 0 tidak sah, peralatan yang belum terdaftar harus merespon paket yang dikirim ke alamat 0.
Titik akhir dari field yang terdiri dari 4 bit, menjadikan 16 kemungkinan titik akhir. Low speed devices, hanya dapat mempunyai 2 tambahan end point pada puncak dari pipe default. (maksimal 4 endpoints)
Cyclic Redundancy Check dijalankan pada data di dalam paket yang dikirim. Semua penanda (token) paket mempunyai sebuah 5 bit CRC ketika paket data mempunyai sebuah 16 bit CRC.
Akhir dari paket yang disinyalkan dengan satu angka akhir 0 (Single Ended Zero/SEO) untuk kira-kira 2 kali bit diikuti oleh sebuah J 1 kali.
Data yang dikirim dalam bus USB adalah salah satu dari 4 bentuk, yaitu control, interrupt, bulk, atauisochronous.
Untuk membuat suatu peralatan yang dapat berkomunikasi dengan protokol USB tidak perlu harus mengetahui secara rinci protokol USB. Bahkan kadang tidak perlu pengetahuan tentang protokol USB sama sekali. Pengetahuan tentang protokol USB hanya diperlukan untuk mengetahui spesifikasi yang dibutuhkan untuk alat kita. Pada kenyataannya untuk mengimplementasikan USB protokol diFPGA ataupun perangkat bantu lain sangat tidak efisien dan banyak waktu terbuang untuk merancangnya. Menggunakankontroler USB sangat lebih dianjurkan dalam membuat alat yang dapat berkomunikasi melalui protokol ini. Kontroler USB mempunyai banyak macam bentuk, dari microcontroller berbasis 8051 yang mempunyai input output USB secara langsung sampai pengubah protocol dari serial sepertiI2C bus ke USB.
USB controller biasanya dijual dengan disertai berbagai fasilitas yang mempermudah pengembangan alat, diantaranya manual yang lengkap, driver untukwindows XP, contoh code aplikasi untuk mengakses USB, contoh code untuk USB controller, dan skema rangkaian elektronikanya.
Dalam sisi pengembangan software aplikasi dalam personal computer, komunikasi antar hardware di dalam perangkat keras USB tidak terlalu diperhatikan karena Windows ataupunsistem operasi lain yang akan mengurusnya. Pengembang perangkat lunak hanya memberikan data yang akan dikirim ke alat USB di buffer penyimpan dan membaca data dari alat USB dari buffer pembaca. Untuk driver pun kadang-kadang Windows sudah menyediakannya, kecuali untuk peralatan yang mempunyai spesifikasi khusus kita harus membuatnya sendiri.