`
`Personal Jukebox (PJB)Personal Jukebox (PJB)
`
`
`
`Systems Research Center and PAADSystems Research Center and PAAD
`
`
`
`Last updated October 13, 2000Last updated October 13, 2000
`
`1
`
`
`
`
`
`What Is This?What Is This?
`
` Cool consumer device, exploring convergence of:
`– cheap, low power, fast, imbedded computers
`– powerful, common, home PC’s with Internet access
`
` Portable audio system: 100 CD’s in your pocket
`– Take all your music everywhere
`
` Research project that became a product
`
`2
`
`2
`
`
`
`
`
`The TechnologyThe Technology
`
` CD-quality audio compression: 11-to-1 (1 MB/min)
`
` 2.5” disk is 6.5 GBytes, 4 ounces, 3/8” thick
`– 110 hours of CD-quality music (340 hrs on 20 GB)
`
` Lithium-Ion cell: 5 Watt-hour, 2 ounces
`– We achieve 11-hour playing time between charges
`
` PC for acquisition, management, content labeling
`
`3
`
`3
`
`
`
`
`
`Using the PJBUsing the PJB
`
` Everywhere:
`– On that 11-hour flight
`– In your car
`– In your office
`– At home
`
` Choose your music after you leave home
`
`4
`
`4
`
`
`
`
`
`PJB WorkflowPJB Workflow
`
`
`OnlineOnline
`
`MusicMusic
`
`ResellersResellers
`
`
`
`CDDBCDDB
`
`Internet
`
`
`CD-ROMCD-ROM
`
`drivedrive
`
`
`JukeboxJukebox
`
`ManagerManager
`
`onon
`
`Home PCHome PC
`
`
`
`MP3 on PCMP3 on PC
`
`
`AudioAudio
`
`CDCD
`
`PJBPJB
`
`5
`
`5
`
`
`
`
`
`Hardware OverviewHardware Overview
`
`
`USBUSB
`
`(12 Mb/s)(12 Mb/s)
`
`
`Flash ROMFlash ROM
`
`(1 MB)(1 MB)
`
`
`DRAMDRAM
`
`(12 MB)(12 MB)
`
`
`2.5” disk2.5” disk
`
`(many GB)(many GB)
`
`Memory bus
`
`
`DSP (Motorola 56309-80)DSP (Motorola 56309-80)
`
`Running at 35 MHz; about 72 KB on-chip RAMRunning at 35 MHz; about 72 KB on-chip RAM
`Serial
`Serial
`GPIO
`
`LCDLCD
`
`DACDAC
`
`Buttons &Buttons &
`
`(128x64x1)(128x64x1)
`
`(44.1x2x16)(44.1x2x16)
`
`Power MgmtPower Mgmt
`
`Amp
`
`Audio
`output
`
`6
`
`6
`
`
`
`
`
`Hardware RealityHardware Reality
`
`7
`
`7
`
`
`
`
`
`Hardware Close-up (Prototype)Hardware Close-up (Prototype)
`
`8
`
`8
`
`
`
`
`
`Hardware Anatomy (Prototype)Hardware Anatomy (Prototype)
`
`Buttons
`
`Ethernet
`(product uses USB)
`
`DRAM
`
`Flash
`
`Power
`
`Audio
`
`IDE
`
`CPU
`
`LCD
`
`ONCE™
`
`Battery
`
`9
`
`9
`
`
`
`
`
`Physical RobustnessPhysical Robustness
`
` Disk withstands 150G for 2ms while operating
`– roughly a drop from a desk onto carpet
`
` Reality: some temporary non-recoverable errors
`– (while running)
`
` Firmware can continue with small audio loss
`
` LCD is most liable to permanent damage
`
`10
`
`10
`
`
`
`
`
`Player Unit UI OverviewPlayer Unit UI Overview
`
` Human-sensible names (from CDDB initially)
`
` 3-level hierarchy: “set”, “disk” (playlists), “track”
`– multiple copies of a track or disk are (almost) free
`
` 6 buttons: start/stop, up/down, left/right (+volume)
`
` Bitmapped display allows redesigns (& games!)
`
`11
`
`11
`
`
`
`
`
`UI Physical layout (prototype)UI Physical layout (prototype)
`
`12
`
`12
`
`
`
`
`
`User Interface DetailsUser Interface Details
`
`
`
`Current Set, Disk, TrackCurrent Set, Disk, Track
`
`
`This TrackThis Track
`
`This DiskThis Disk
`
`This SetThis Set
`
`
`SequentialSequential
`
`ShuffleShuffle
`
`RepeatRepeat
`
`
`Normal,Normal,
`
`Extra Bass,Extra Bass,
`
`Super BassSuper Bass
`
`
`Track, Track LeftTrack, Track Left
`
`Disc, Disc LeftDisc, Disc Left
`
`
`
`Time IndicatorTime Indicator
`
`
`
`Volume LevelVolume Level
`
`
`Ethernet/USBEthernet/USB
`
`Link StatusLink Status
`
`13
`
`13
`
`
`
`
`
`Firmware OverviewFirmware Overview
`
` No operating system! (manual event loop)
`
` Compression format neutral (select per-track)
`– MP3, AAC, MSAudio, SDMI, ...
`
` About 40,000 lines of C (“char” is 24-bits!)
`– but … assembler is factor of 10 faster
`
` Decoder, CRC, and disk read loop in assembler
`
`14
`
`14
`
`
`
`
`
`Firmware - main loopFirmware - main loop
`
` Poll the devices
`– simpler than interrupts
`
` Main loop calls each
`component in turn to
`give it processor time.
`
` Need to call player process
`frequently enough!
`
`
`
`User InterfaceUser Interface
`
`
`
`Player ProcessPlayer Process
`
`USBUSB
`
`DiskDisk
`
`15
`
`15
`
`
`
`
`
`Firmware - logical flowFirmware - logical flow
`
`
`
`ButtonsButtons
`
`LCDLCD
`
`
`UserUser
`
`InterfaceInterface
`
`Player Process
`
`10MB Buffer
`
`RPCRPC
`
`
`
`File SystemFile System
`
`
`
`DecoderDecoder
`
`
`Ethernet orEthernet or
`
`USB driverUSB driver
`
`
`
`IDE DriverIDE Driver
`
`DACDAC
`
`
`
`Disk DriveDisk Drive
`
`ampamp
`
`16
`
`16
`
`
`
`
`
`File System OverviewFile System Overview
`
` Single meta-data object “Table of Contents” (TOC)
`
` Managed by PC software
`
` Single stream of plain text:
`– Identifies PJB, set, disk, track (each by text name)
`– “track” has location (first allocation block number)
`– Includes map of blocks-in-use
`– Includes CDDB keys
`
`17
`
`17
`
`
`
`
`
`File System On-disk StructureFile System On-disk Structure
`
`
`
`TOC (static 4 MB area)TOC (static 4 MB area)
`
`
`
`Music (128 KB blocks)Music (128 KB blocks)
`
`
`
`currentcurrent
`
`
`
`previousprevious
`
`AA
`
`BB
`
`CC
`
`DD
`
`18
`
`18
`
`
`
`Content blocks in detailContent blocks in detail
`
` Doubly linked lists (w/ redundant forward links)
` Header identifies content and origin (for scavenging)
` Supports continuously encoded music (extents)
`
`FWD/BACK
`PTR
`
`1st
`track
`start
`
`2nd
`track
`start
`
`FWD PTR
`CRC
`
`3rd
`track
`start
`
`19
`
`19
`
`
`
`
`
`Disk Error HandlingDisk Error Handling
`
` Bad TOC - use replica
`
` Bad TOC replica - use old version
`
` Bad forward pointer in block - use replica
`
` Bad replica forward pointer - abandon track
`
` Bad payload in block - skip and resync music
`
`20
`
`20
`
`
`
`
`
`File System MaintenanceFile System Maintenance
`
` No fragmentation worries
`– worst case is seek every 128KB (8 seconds)
`
` No fsck or scandisk (no inconsistent states)
`
` Relies on:
`– large files
`– no file modification
`– single writer
`
`21
`
`21
`
`
`
`
`
`Power ManagementPower Management
`
` 2.5” disk in sleep mode consumes about 100 mW
`
` Disk spin-up takes 5W-secs (2x AA’s don’t work)
`
` Power-up disk, read 10 MB into DRAM, power off
`
` Use on-chip memory for inner loop, not DRAM
`
` Total average PJB power consumption 450 mW
`
`22
`
`22
`
`
`
`
`
`Market AreaMarket Area
`
` PJB was the first product in its category
`– Less than $10/hour of music (Rio is $200/hour)
`– Only prerequisite is owning a PC
`
` Lots of other possibilities in this area, e.g.:
`– Internet music purchase: store in PJB, cache on PC
`– Caching CD player in your car
`– Home network with custom audio in each room
`
`23
`
`23
`
`
`
`
`
`StatusStatus
`
` Research project ended up with 100 prototypes
`
` Licensed to third party (HanGo)
`
` Now shipping (http://www.pjbox.com)
`
` Project details:
`– http://research.compaq.com/SRC/pjb/
`
`24
`
`24
`
`
`
`25
`
`