usb-id-database 0.2.1 → 0.3
raw patch · 9 files changed
+211/−151 lines, 9 filesdep +binarydep −bimapdep −encodingdep −utf8-stringdep ~bytestring
Dependencies added: binary
Dependencies removed: bimap, encoding, utf8-string
Dependency ranges changed: bytestring
Files
- System/USB/IDDB.hs +12/−9
- System/USB/IDDB/Base.hs +53/−27
- System/USB/IDDB/LinuxUsbIdRepo.hs +48/−52
- System/USB/IDDB/Misc.hs +7/−8
- System/USB/IDDB/UsbDotOrg.hs +22/−21
- example.hs +6/−7
- usb-id-database.cabal +17/−10
- usb_dot_org_db.txt +17/−14
- usb_id_repo_db.txt +29/−3
System/USB/IDDB.hs view
@@ -6,43 +6,46 @@ Example usage: @-import Data.ByteString.Char8 ('pack', 'unpack') import System.USB.IDDB-import System.USB.IDDB.LinuxUsbIdRepo-import Text.Printf+import System.USB.IDDB.LinuxUsbIdRepo (staticDb)+import Text.Printf (printf) main :: IO () main = do -- Load a snapshot from the linux-usb.org database. db <- 'staticDb'+@++@ -- Print the name of vendor 0x1d6b- 'putStrLn' $ 'maybe' \"unknown VID!\" 'unpack'+ putStrLn $ maybe \"unknown VID!\" id $ 'vendorName' db 0x1d6b @ @ -- Print the ID of \"Linux Foundation\"- 'putStrLn' $ 'maybe' \"unknown vendor name!\" ('printf' \"0x%04x\")- $ 'vendorId' db ('pack' "Linux Foundation")+ putStrLn $ maybe \"unknown vendor name!\" ('printf' \"0x%04x\")+ $ 'vendorId' db \"Linux Foundation\" @ @ -- Print the name of the product with ID 0x0101 from the -- vendor with ID 0x1d6b.- 'putStrLn' $ 'maybe' \"unknown PID!\" 'unpack'+ putStrLn $ maybe \"unknown PID!\" id $ 'productName' db 0x1d6b 0x0101 @ @ -- Print the ID of the product with the name \"Audio Gadget\" -- from the vendor with ID 0x1d6b.- 'putStrLn' $ 'maybe' \"unknown product name!\" ('printf' \"0x%04x\")- $ 'productId' db 0x1d6b ('pack' \"Audio Gadget\")+ putStrLn $ maybe \"unknown product name!\" ('printf' \"0x%04x\")+ $ 'productId' db 0x1d6b \"Audio Gadget\" @ -} module System.USB.IDDB ( -- *Types IDDB + , ID, Name , VendorID, VendorName , ProductID, ProductName , ClassID, ClassName
System/USB/IDDB/Base.hs view
@@ -3,7 +3,8 @@ module System.USB.IDDB.Base ( IDDB(..) - , VendorID, VendorName, VendorDB+ , ID, Name+ , VendorID, VendorName , ProductID, ProductName, ProductDB , ClassID, ClassName, ClassDB , SubClassID, SubClassName, SubClassDB@@ -23,10 +24,10 @@ ) where -import Data.ByteString (ByteString)+import Data.Binary (Binary(..), Get) -import qualified Data.Bimap as BM-import qualified Data.Map as MP+import qualified Data.IntMap as IM+import qualified Data.Map as MP #ifdef BUILD_WITH_CABAL import Paths_usb_id_database (getDataFileName)@@ -40,7 +41,7 @@ ------------------------------------------------------------------------------- type ID = Int-type Name = ByteString+type Name = String type VendorID = ID type ProductID = ID@@ -54,52 +55,77 @@ type SubClassName = Name type ProtocolName = Name -type VendorDB = BM.Bimap VendorID VendorName-type ProductDB = BM.Bimap ProductID ProductName-type ClassDB = MP.Map ClassID (ClassName, SubClassDB)-type SubClassDB = MP.Map SubClassID (SubClassName, ProtocolDB)-type ProtocolDB = MP.Map ProtocolID ProtocolName+type ProductDB = ( MP.Map ProductName ProductID+ , IM.IntMap ProductName+ )+type ClassDB = IM.IntMap (ClassName, SubClassDB)+type SubClassDB = IM.IntMap (SubClassName, ProtocolDB)+type ProtocolDB = IM.IntMap ProtocolName -- |A database of USB identifiers. Contains both vendor identifiers -- and product identifiers.-data IDDB = IDDB { dbVendors :: VendorDB- , dbProducts :: MP.Map VendorID ProductDB- , dbClasses :: ClassDB+data IDDB = IDDB { dbVendorNameId :: MP.Map VendorName VendorID+ , dbVendorIdName :: IM.IntMap VendorName+ , dbProducts :: IM.IntMap ProductDB+ , dbClasses :: ClassDB } --- |An empty database./+-- |An empty database. emptyDb :: IDDB-emptyDb = IDDB { dbVendors = BM.empty- , dbProducts = MP.empty- , dbClasses = MP.empty+emptyDb = IDDB { dbVendorNameId = MP.empty+ , dbVendorIdName = IM.empty+ , dbProducts = IM.empty+ , dbClasses = IM.empty } -------------------------------------------------------------------------------+-- Binary serialisation+-------------------------------------------------------------------------------++instance Binary IDDB where+ put db = put ( dbVendorNameId db+ , dbVendorIdName db+ , dbProducts db+ , dbClasses db+ )++ get = do (a, b, c, d) <- get :: Get ( MP.Map VendorName VendorID+ , IM.IntMap VendorName+ , IM.IntMap ProductDB+ , ClassDB+ )+ return IDDB { dbVendorNameId = a+ , dbVendorIdName = b+ , dbProducts = c+ , dbClasses = d+ }++------------------------------------------------------------------------------- -- Query database ------------------------------------------------------------------------------- vendorName :: IDDB -> VendorID -> Maybe VendorName-vendorName db vid = BM.lookup vid $ dbVendors db+vendorName db vid = IM.lookup vid $ dbVendorIdName db vendorId :: IDDB -> VendorName -> Maybe VendorID-vendorId db name = BM.lookupR name $ dbVendors db+vendorId db name = MP.lookup name $ dbVendorNameId db productName :: IDDB -> VendorID -> ProductID -> Maybe ProductName-productName db vid pid = BM.lookup pid =<< MP.lookup vid (dbProducts db)+productName db vid pid = IM.lookup pid . snd =<< IM.lookup vid (dbProducts db) productId :: IDDB -> VendorID -> ProductName -> Maybe ProductID-productId db vid name = BM.lookupR name =<< MP.lookup vid (dbProducts db)+productId db vid name = MP.lookup name . fst =<< IM.lookup vid (dbProducts db) className :: IDDB -> ClassID -> Maybe ClassName-className db cid = fmap fst $ MP.lookup cid $ dbClasses db+className db cid = fmap fst . IM.lookup cid $ dbClasses db subClassName :: IDDB -> ClassID -> SubClassID -> Maybe SubClassName-subClassName db cid scid = fmap fst $ MP.lookup scid . snd- =<< MP.lookup cid (dbClasses db)+subClassName db cid scid = fmap fst $ IM.lookup scid . snd+ =<< IM.lookup cid (dbClasses db) protocolName :: IDDB -> ClassID -> SubClassID -> ProtocolID -> Maybe ProtocolName-protocolName db cid scid protId = MP.lookup protId . snd- =<< MP.lookup scid . snd- =<< MP.lookup cid (dbClasses db)+protocolName db cid scid protId = IM.lookup protId . snd+ =<< IM.lookup scid . snd+ =<< IM.lookup cid (dbClasses db)
System/USB/IDDB/LinuxUsbIdRepo.hs view
@@ -5,93 +5,89 @@ , fromWeb ) where -import Control.Monad (liftM)-import Data.Encoding ( decodeStrictByteString- , encodeStrictByteString- )+import Control.Monad (fmap) import Data.Maybe (fromJust)-import Data.String.UTF8 (UTF8, fromRep)-import Network.Download (openURI)+import Network.Download (openURIString) import Numeric (readHex) import Parsimony import Parsimony.Char (char, hexDigit, spaces, tab)-import System.IO (FilePath)+import System.IO (FilePath, readFile) import System.USB.IDDB.Base-import System.USB.IDDB.Misc (BSParser, eitherMaybe, restOfLine)+import System.USB.IDDB.Misc (eitherMaybe, swap, restOfLine) -import qualified Codec.Binary.UTF8.String as UTF8 (encode)-import qualified Data.Bimap as BM (Bimap, fromList)-import qualified Data.ByteString as BS (ByteString, pack, readFile)-import qualified Data.Encoding.ISO88591 as Enc (ISO88591(..))-import qualified Data.Encoding.UTF8 as Enc (UTF8(..))-import qualified Data.Map as MP (Map, fromList)+import qualified Data.IntMap as IM (IntMap, fromList)+import qualified Data.Map as MP (Map, fromList) -- |Construct a database from a string in the format used by -- <http://linux-usb.org>.-parseDb :: UTF8 BS.ByteString -> Maybe IDDB+parseDb :: String -> Maybe IDDB parseDb = eitherMaybe . parse dbParser -dbParser :: BSParser IDDB+dbParser :: Parser String IDDB dbParser = do spaces comments- (vendorDB, productDB) <- lexeme vendorSection+ (vendorNameId, vendorIdName, productDB) <- lexeme vendorSection comments classDB <- classSection - return IDDB { dbVendors = vendorDB- , dbProducts = productDB- , dbClasses = classDB+ return IDDB { dbVendorNameId = vendorNameId+ , dbVendorIdName = vendorIdName+ , dbProducts = productDB+ , dbClasses = classDB } where- utf8BS :: String -> BS.ByteString- utf8BS = BS.pack . UTF8.encode-- lexeme :: BSParser a -> BSParser a+ lexeme :: Parser String a -> Parser String a lexeme p = do x <- p spaces return x - comment :: BSParser String+ comment :: Parser String String comment = char '#' >> restOfLine - comments :: BSParser [String]+ comments :: Parser String [String] comments = many $ lexeme comment - hexId :: Num n => Int -> BSParser n+ hexId :: Num n => Int -> Parser String n hexId d = do ds <- count d hexDigit case readHex ds of [(n, _)] -> return n _ -> error "impossible" - vendorSection :: BSParser (VendorDB, MP.Map VendorID ProductDB)+ vendorSection :: Parser String ( MP.Map VendorName VendorID+ , IM.IntMap VendorName+ , IM.IntMap ProductDB+ ) vendorSection = do xs <- lexeme $ many vendorParser- return ( BM.fromList [(vid, name) | (vid, name, _) <- xs]- , MP.fromList [(vid, pdb) | (vid, _, pdb) <- xs]+ return ( MP.fromList [(name, vid) | (vid, name, _) <- xs]+ , IM.fromList [(vid, name) | (vid, name, _) <- xs]+ , IM.fromList [(vid, pdb) | (vid, _, pdb) <- xs] ) - vendorParser :: BSParser (VendorID, VendorName, BM.Bimap ProductID ProductName)+ vendorParser :: Parser String (VendorID, VendorName, ProductDB) vendorParser = do vid <- hexId 4 count 2 $ char ' ' name <- restOfLine products <- many productParser return ( vid- , utf8BS name- , BM.fromList products+ , name+ , ( MP.fromList $ fmap swap products+ , IM.fromList products+ ) ) - productParser :: BSParser (ProductID, ProductName)+ productParser :: Parser String (ProductID, ProductName) productParser = do tab pid <- hexId 4 count 2 $ char ' ' name <- restOfLine- return (pid, utf8BS name)+ return (pid, name) - classSection :: BSParser ClassDB+ classSection :: Parser String ClassDB classSection = do xs <- lexeme $ many classParser- return $ MP.fromList xs+ return $ IM.fromList xs - classParser :: BSParser (ClassID, (ClassName, SubClassDB))+ classParser :: Parser String (ClassID, (ClassName, SubClassDB)) classParser = do char 'C' char ' ' cid <- hexId 2@@ -99,42 +95,42 @@ name <- restOfLine subClasses <- many subClassParser return ( cid- , (utf8BS name, MP.fromList subClasses)+ , (name, IM.fromList subClasses) ) - subClassParser :: BSParser (SubClassID, (SubClassName, ProtocolDB))+ subClassParser :: Parser String (SubClassID, (SubClassName, ProtocolDB)) subClassParser = do tab scid <- hexId 2 count 2 $ char ' ' name <- restOfLine protocols <- many (try protocolParser) return ( scid- , (utf8BS name, MP.fromList protocols)+ , (name, IM.fromList protocols) ) - protocolParser :: BSParser (ProtocolID, ProtocolName)+ protocolParser :: Parser String (ProtocolID, ProtocolName) protocolParser = do count 2 tab protId <- hexId 2 count 2 $ char ' ' name <- restOfLine- return (protId, utf8BS name)+ return (protId, name) -- |Construct a database from the data available at -- <http://linux-usb.org/usb.ids>. fromWeb :: IO (Maybe IDDB)-fromWeb = liftM ( either (const Nothing)- (parseDb . fromRep . iso88591_to_utf8)- ) $ openURI dbURL+fromWeb = fmap ( either (const Nothing)+ parseDb+ ) $ openURIString dbURL +-- |Load a vendor database from file. If the file can not be read for+-- some reason an error will be thrown. fromFile :: FilePath -> IO (Maybe IDDB)-fromFile = liftM (parseDb . fromRep . iso88591_to_utf8) . BS.readFile--iso88591_to_utf8 :: BS.ByteString -> BS.ByteString-iso88591_to_utf8 = encodeStrictByteString Enc.UTF8- . decodeStrictByteString Enc.ISO88591+fromFile = fmap parseDb . readFile +-- |Load a database from a snapshot of the linux-usb.org database which is+-- supplied with the package. staticDb :: IO IDDB-staticDb = getDataFileName staticDbPath >>= liftM fromJust . fromFile+staticDb = getDataFileName staticDbPath >>= fmap fromJust . fromFile staticDbPath :: FilePath staticDbPath = "usb_id_repo_db.txt"
System/USB/IDDB/Misc.hs view
@@ -1,20 +1,19 @@ module System.USB.IDDB.Misc- ( BSParser- , eitherMaybe+ ( eitherMaybe+ , swap , restOfLine ) where -import Data.ByteString (ByteString)-import Data.String.UTF8 (UTF8) import Parsimony (Parser, manyTill) import Parsimony.Char (anyChar, newline) -type BSParser = Parser (UTF8 ByteString)-- eitherMaybe :: Either e a -> Maybe a eitherMaybe = either (const Nothing) Just -restOfLine :: BSParser String+swap :: (a, b) -> (b, a)+swap = uncurry $ flip (,)++restOfLine :: Parser String String restOfLine = manyTill anyChar newline+
System/USB/IDDB/UsbDotOrg.hs view
@@ -5,46 +5,47 @@ , fromWeb ) where -import Control.Monad (liftM)+import Control.Monad (fmap) import Data.Maybe (fromJust)-import Data.String.UTF8 (UTF8, fromRep)-import Network.Download (openURI)+import Network.Download (openURIString) import Parsimony import Parsimony.Char (char, digit)-import System.IO (FilePath)+import System.IO (FilePath, readFile) import System.USB.IDDB.Base ( IDDB(..) , VendorID, VendorName , getDataFileName )-import System.USB.IDDB.Misc (BSParser, eitherMaybe, restOfLine)+import System.USB.IDDB.Misc ( eitherMaybe+ , swap+ , restOfLine+ ) -import qualified Codec.Binary.UTF8.String as UTF8 (encode)-import qualified Data.Bimap as BM (fromList)-import qualified Data.ByteString as BS (ByteString, pack, readFile)-import qualified Data.Map as MP (empty)+import qualified Data.IntMap as IM (fromList, empty)+import qualified Data.Map as MP (fromList) -- |Construct a database from a string in the format used by usb.org.-parseDb :: UTF8 BS.ByteString -> Maybe IDDB+parseDb :: String -> Maybe IDDB parseDb = eitherMaybe . parse staticDbParser -staticDbParser :: BSParser IDDB+staticDbParser :: Parser String IDDB staticDbParser = do vendors <- many vendorParser- return IDDB { dbVendors = BM.fromList vendors- , dbProducts = MP.empty- , dbClasses = MP.empty+ return IDDB { dbVendorNameId = MP.fromList $ fmap swap vendors+ , dbVendorIdName = IM.fromList vendors+ , dbProducts = IM.empty+ , dbClasses = IM.empty } where- vendorParser :: BSParser (VendorID, VendorName)+ vendorParser :: Parser String (VendorID, VendorName) vendorParser = do vid <- many1 digit char '|' name <- restOfLine- return (read vid, BS.pack $ UTF8.encode name)+ return (read vid, name) -- |Load a vendor database from file. If the file can not be read for -- some reason an error will be thrown. fromFile :: FilePath -> IO (Maybe IDDB)-fromFile = liftM (parseDb . fromRep) . BS.readFile+fromFile = fmap parseDb . readFile -- |Construct a database from the list of companies available at -- <http://www.usb.org/developers/tools/comp_dump>. The website@@ -53,9 +54,9 @@ -- list seems to be quite stable. Using this function more than once -- a day is probably overkill. fromWeb :: IO (Maybe IDDB)-fromWeb = liftM ( either (const Nothing)- (parseDb . fromRep)- ) $ openURI dbURL+fromWeb = fmap ( either (const Nothing)+ parseDb+ ) $ openURIString dbURL staticDbPath :: FilePath staticDbPath = "usb_dot_org_db.txt"@@ -66,4 +67,4 @@ -- |Load a database from a snapshot of the usb.org database which is -- supplied with the package. staticDb :: IO IDDB-staticDb = getDataFileName staticDbPath >>= liftM fromJust . fromFile+staticDb = getDataFileName staticDbPath >>= fmap fromJust . fromFile
example.hs view
@@ -1,9 +1,8 @@ module Main where -import Data.ByteString.Char8 (pack, unpack) import System.USB.IDDB-import System.USB.IDDB.LinuxUsbIdRepo-import Text.Printf+import System.USB.IDDB.LinuxUsbIdRepo (staticDb)+import Text.Printf (printf) main :: IO ()@@ -11,19 +10,19 @@ db <- staticDb -- Print the name of vendor 0x1d6b- putStrLn $ maybe "unknown VID!" unpack+ putStrLn $ maybe "unknown VID!" id $ vendorName db 0x1d6b -- Print the ID of "Linux Foundation" putStrLn $ maybe "unknown vendor name!" (printf "0x%04x")- $ vendorId db (pack "Linux Foundation")+ $ vendorId db "Linux Foundation" -- Print the name of the product with ID 0x0101 from the -- vendor with ID 0x1d6b.- putStrLn $ maybe "unknown PID!" unpack+ putStrLn $ maybe "unknown PID!" id $ productName db 0x1d6b 0x0101 -- Print the ID of the product with the name "Audio Gadget" -- from the vendor with ID 0x1d6b. putStrLn $ maybe "unknown product name!" (printf "0x%04x")- $ productId db 0x1d6b (pack "Audio Gadget")+ $ productId db 0x1d6b "Audio Gadget"
usb-id-database.cabal view
@@ -1,5 +1,5 @@ name: usb-id-database-version: 0.2.1+version: 0.3 cabal-version: >=1.6 build-type: Simple stability: provisional@@ -22,15 +22,17 @@ description: Build an example program default: False +flag profile-example+ description: Enable profiling for the example program+ default: False+ library- build-depends: base >= 3 && < 4.2- , bimap >= 0.2 && < 0.3- , bytestring >= 0.9 && < 1.0- , containers >= 0.2 && < 0.3- , download >= 0.3 && < 0.4- , encoding >= 0.6.2 && < 0.7- , parsimony >= 1 && < 1.1- , utf8-string >= 0.3.5 && < 0.4+ build-depends: base >= 3 && < 4.2+ , binary == 0.5.*+ , bytestring == 0.9.*+ , containers == 0.2.*+ , download == 0.3.*+ , parsimony >= 1 && < 1.1 ghc-options: -Wall cpp-options: -DBUILD_WITH_CABAL exposed-modules: System.USB.IDDB@@ -42,10 +44,15 @@ executable example extensions: CPP- ghc-options: -Wall cpp-options: -DBUILD_WITH_CABAL main-is: example.hs+ if flag(example) buildable: True else buildable: False++ if flag(profile-example)+ ghc-options: -Wall -prof -auto-all -caf-all -fforce-recomp+ else+ ghc-options: -Wall
usb_dot_org_db.txt view
@@ -1,4 +1,3 @@-1|Kavi-EVAL 1003|Atmel Corporation 1006|Mitsumi 1008|Hewlett Packard@@ -182,9 +181,11 @@ 1975|TIME Interconnect Ltd. 1988|Datafab Systems Inc. 1994|AVerMedia Technologies, Inc.+1996|Carry Computer Eng., Co., Ltd. 1999|Casio Computer Co., Ltd. 2001|D-Link Corp. 2010|Arasan Chip Systems Inc.+2015|David Electronics Company, Ltd. 2038|Circuit Assembly Corp. 2039|Century Corporation 2041|Dotop Technology, Inc.@@ -201,11 +202,11 @@ 2247|TAI TWUN ENTERPRISE CO., LTD. 2276|Pioneer Corporation 2278|Gemalto SA-2288|CardScan Inc. 2297|Wipro Technologies 2310|FARADAY Technology Corp. 2313|Audio-Technica Corp. 2316|Silicon Motion, Inc. - Taiwan+2334|Garmin International 2338|Dymo Corporation 2352|Toshiba Corporation 2362|Pixart Imaging, Inc.@@ -218,7 +219,6 @@ 2395|Medialogic Corporation 2438|Panasonic Electric Works Co., Ltd. 2468|Contech Research, Inc.-2472|Lin Shiung Enterprise Co., Ltd. 2475|Japan Cash Machine Co., Ltd. 2497|ARRIS International 2498|NISCA Corporation@@ -260,6 +260,7 @@ 2965|ASIX Electronics Corporation 2967|O2 Micro, Inc. 2996|HTC Corporation+3010|Seagate Technology LLC 3034|Realtek Semiconductor Corp. 3035|Ericsson AB 3044|Elka International Ltd.@@ -289,18 +290,18 @@ 3351|NALTEC, Inc. 3353|Hank Connection Industrial Co., Ltd. 3388|SRI CABLE TECHNOLOGY LTD.-3393|Ta Yun Terminals Industrial Co., Ltd.+3393|Ta Yun Electronic Technology Co., Ltd. 3402|NF Corporation 3403|Grape Systems Inc. 3409|Volex (Asia) Pte Ltd 3413|ASKA Technologies Inc. 3425|MEILU ELECTRONICS (SHENZHEN) CO., LTD. 3426|Darfon Electronics Corp.-3450|MARX CryptoTech LP 3452|Taiwan Line Tek Electronic Co., Ltd. 3463|Dolby Laboratories Inc. 3468|C-MEDIA ELECTRONICS INC. 3471|Pitney Bowes+3484|Chee Chen Hi-Technology Co., Ltd. 3495|IOGEAR, Inc. 3524|Macpower & Tytech Technology Co., LTD. 3525|SDK Co, Ltd.@@ -344,11 +345,13 @@ 4016|Haurtian Wire & Cable Co., Ltd. 4024|Wistron Corporation 4026|SAN SHING ELECTRONICS CO., LTD..+4027|Bitwise Systems, Inc. 4046|Sony Ericsson Mobile Communications AB 4087|CHI SHING COMPUTER ACCESSORIES CO., LTD. 4100|LG Electronics Inc. 4134|Newly Corporation 4168|Targus Group International+4172|AMCO TEC International Inc. 4183|ON Semiconductor 4184|Western Digital Technologies, Inc. 4185|Giesecke & Devrient GmbH@@ -388,7 +391,6 @@ 4756|RISO KAGAKU CORP. 4779|Honey Bee Electronic International Ltd. 4792|Zhejiang Xinya Electronic Technology Co., Ltd.-4813|Cables Unlimited 4818|LINE TECH INDUSTRIAL CO., LTD. 4823|Better Holdings (HK) Limited 4907|Konica Minolta Holdings, Inc.@@ -429,6 +431,7 @@ 5377|Pine-Tum Enterprise Co., Ltd. 5398|Skymedi Corporation 5404|VeriSilicon Holdings Co., Ltd.+5421|JMicron Technology Corp. 5422|HLDS (Hitachi-LG Data Storage, Inc.) 5440|Phihong Technology Co., Ltd. 5451|PNY Technologies Inc.@@ -490,7 +493,6 @@ 6397|FineArch Inc. 6420|Alco Digital Devices Limited 6421|Nordic Semiconductor ASA-6447|Avago Technologies, Pte. 6448|Shenzhen Xianhe Technology Co., Ltd. 6449|Ningbo Broad Telecommunication Co., Ltd. 6473|Lab126@@ -505,7 +507,6 @@ 6632|Industrial Technology Research Institute 6639|Pak Heng Technology (Shenzhen) Co., Ltd. 6666|USB-IF non-workshop-6693|Amphenol East Asia Ltd. 6709|Astec Power, a division of Emerson Network Power 6710|Biwin Technology Ltd. 6720|TERMINUS TECHNOLOGY INC.@@ -518,7 +519,7 @@ 6779|Lumberg Connect GmbH 6795|SGS Taiwan Ltd. 6808|Leica Camera AG-6821|UBeacon Technologies, Inc.+6809|Asia Tai Technology (Dongguan) Co., Ltd. 6822|eFortune Technology Corp. 6830|Johnson Component & Equipments Co., Ltd. 6859|Salcomp Plc@@ -531,6 +532,7 @@ 6946|WiLinx Corp. 6962|Ugobe, Inc. 6984|Plastron Precision Co., Ltd.+7001|K.S. Terminals Inc. 7002|Chao Zhou Kai Yuan Electric Co., Ltd. 7013|The Hong Kong Standards and Testing Centre Ltd. 7046|Dongguan Guanshang Electronics Co., Ltd.@@ -548,16 +550,16 @@ 7184|Lanterra Industrial Co., Ltd. 7202|ZHONGSHAN CHIANG YU ELECTRIC CO., LTD. 7207|SHENZHEN D&S INDUSTRIES LIMITED+7217|LS Mtron 7229|NONIN MEDICAL INC. 7275|Philips & Lite-ON Digital Solutions Corporation 7288|Mindray DS USA, Inc.-7291|LUXSHARE PRECISION INDUSTRY (SHENZHEN) CO., LTD. 7310|ASTRON INTERNATIONAL CORP. 7320|ALPINE ELECTRONICS, INC. 7329|Symwave, Inc. 7347|Aces Electronic Co., Ltd. 7348|OPEX CORPORATION-7358|Luminary Micro Inc.+7358|Texas Instruments - Stellaris 7359|FORTAT SKYMARK INDUSTRIAL COMPANY 7360|PlantSense 7370|NextWave Broadband Inc.@@ -572,6 +574,7 @@ 7490|DRAGON JOY LIMITED 7491|Montage Technology, Inc. 7493|Qisda Corporation+7496|Shenzhen XinYonghui Precise Technology Co., Ltd. 7497|SHENZHEN LINKCONN ELECTRONICS CO., LTD. 7501|Pegatron Corporation 7502|INPHI CORPORATION@@ -612,12 +615,9 @@ 7863|WIN WIN PRECISION INDUSTRIAL CO., LTD. 7881|MOSER BAER INDIA LIMITED 7899|BLACKMAGIC DESIGN PTY.-7910|SHENZHEN EVERWIN PRECISION TECHNOLOGY CO., LTD. 7911|EPCOS 7912|ONDA COMMUNICATION S.p.a. 7913|PC PARTNER LIMITED-7923|JIANGXI SHIP ELECTRONICS CO., LTD.-7924|TATA ELXSI LTD. 7936|YUEQING ZHONGLI COMPUTER ELECTRONICS CO., LTD. 7950|Inflexis Corporation 7951|Action Technology (SZ) Co., Ltd.@@ -694,4 +694,7 @@ 8439|SOFTHARD Technology Ltd. 8446|Elektrobit Inc. 8448|RT Systems Inc.+8457|VIA Labs, Inc.+8469|Alliance Material Co., Ltd.+8470|KT Tech Inc. 8888|Motorola MDS
usb_id_repo_db.txt view
@@ -9,8 +9,8 @@ # The latest version can be obtained from # http://www.linux-usb.org/usb.ids #-# Version: 2009.08.25-# Date: 2009-08-25 20:34:02+# Version: 2009.09.17+# Date: 2009-09-17 20:34:02 # # Vendors, devices and interfaces. Please keep sorted.@@ -870,6 +870,7 @@ 00d8 WLI-U2-SG54HP 00d9 WLI-U2-G54HP 00da WLI-U2-KG54L 802.11bg+ 0157 Buffalo External Hard Drive HD-PEU2 0412 Award Software International 0413 Leadtek Research, Inc. 1310 WinFast TV - NTSC + FM@@ -1957,6 +1958,7 @@ 0a02 Premium Stereo USB Headset 350 0a03 Logitech USB Microphone 0a04 V20 portable speakers (USB powered)+ 0a13 Z-5 Speakers 0b02 BT Mini-Receiver (HID proxy mode) 8801 Video Camera b305 BT Mini-Receiver@@ -2680,6 +2682,7 @@ 10a8 iP6220D 10a9 iP6600D 10b6 PIXMA iP4300 Printer+ 10c2 PIXMA iP1800 Printer 1404 W6400PG 1405 W8400PG 150f BIJ2350 PCL@@ -4040,6 +4043,7 @@ 0004 Direct Connect 0012 F8T012 Bluetooth Adapter 0013 F8T013 Bluetooth Adapter+ 0017 B8T017 Bluetooth+EDR 2.1 0050 F5D6050 802.11b Wireless Adapter 0081 F8T001v2 Bluetooth 0083 Bluetooth Device@@ -4563,6 +4567,7 @@ 0010 Graphire 0011 Graphire 2 0013 Graphire 3 4x5+ 0017 Bamboo Fun 0020 Intuos 4x5 0021 Intuos 6x8 0022 Intuos 9x12@@ -4994,6 +4999,7 @@ 017c HDD/1394B 0251 Optical 0252 Optical+ 0470 Prestige Portable Hard Drive 1052 DVD+RW External Drive 059c A-Trend Technology Co., Ltd 059d Advanced Input Devices@@ -5670,6 +5676,7 @@ 0642 VIA Medical Corp. 0644 TEAC Corp. 0000 Floppy+ 0200 All-In-One Multi-Card Reader CA200/B/S 1000 CD-ROM Drive 800d TASCAM Portastudio DP-01FX d001 CD-R/RW Unit@@ -5694,7 +5701,9 @@ 064e Suyin Corp. a100 Acer OrbiCam a101 Acer CrystalEye Webcam+ a102 Lenovo Webcam a110 HP Webcam+ c107 HP webcam [dv6-1190en] d101 Acer CrystalEye Webcam 064f WIBU-Systems AG 0bd7 BOX/U@@ -7018,6 +7027,7 @@ 0002 AVerTV PVR USB/EZMaker Pro Device 0026 AVerTV 1228 MPEG-2 Capture Device (M038)+ a309 HP DVB-T TV Tuner [HP dv6-1190en] e880 MPEG-2 Capture Device (E880) e882 MPEG-2 Capture Device (E882) 07cb Kingmax Technology, Inc.@@ -7164,6 +7174,7 @@ 0002 Cash Drawer I/F 07ef STSN 0001 Internet Access Device+07f2 Microcomputer Applications, Inc. 07f6 Circuit Assembly Corp. 07f7 Century Corp. 0005 ScanLogic/Century Corporation uATA@@ -7618,6 +7629,7 @@ 0030 TravelDrive 0822 TravelDrive 2C 0832 Hi-Speed Mass Storage Device+ 0834 M-Disk 220 0998 Kingston Data Traveler2.0 Disk Driver 0999 Kingston Data Traveler2.0 Disk Driver 1000 TravelDrive 2C@@ -8266,6 +8278,7 @@ 2123 Bluetooth dongle 2130 2045 Bluetooth 2.0 USB-UHE Device with trace filter 2131 2045 Bluetooth 2.0 Device with trace filter+ 2150 BCM2046 Bluetooth Device 4500 BCM2046B1 USB 2.0 Hub (part of BCM2046 Bluetooth) 4502 Keyboard (Boot Interface Subclass) 5800 BCM5880 Secure Applications Processor@@ -8893,7 +8906,7 @@ 0153 Mass Storage Device 0156 Mass Storage Device 0157 Mass Storage Device- 0158 Mass Storage Device+ 0158 USB 2.0 multicard reader 0161 Mass Storage Device 0168 Mass Storage Device 0169 Mass Storage Device@@ -9726,6 +9739,7 @@ 0004 Virtual CCID 0005 Virtual Mass Storage 0006 Virtual Keyboard+ f80a Smoker FX2 0e16 JMTek, LLC 0e17 Walex Electronic, Ltd 0e1b Crewave@@ -10638,6 +10652,8 @@ 134e Digby's Bitpile, Inc. DBA D Bit 1357 P&E Microcomputer Systems 0503 USB-ML-12 HCS08/HCS12 Multilink+1366 SEGGER+ 0101 J-Link ARM 136b STEC 1370 Swissbit 0323 Swissmemory cirrusWHITE@@ -11235,6 +11251,8 @@ 1772 System Level Solutions, Inc. 1776 Arowana 501c 300K CMOS Camera+177f Sweex+ 0313 LW313 802.11n Adapter [ralink rt2770 + rt2720] 1781 Multiple Vendors 083e MetaGeek Wi-Spy 0938 Iguanaworks USB IR Transceiver@@ -11362,6 +11380,7 @@ 19d2 ONDA Communication S.p.A. 0002 ET502HS/MT505UP ZTE MF632 0031 ZTE MF636+ 0064 ZTE MF627 AU 2000 ZTE MF627/MF628/MF628+ HSDPA 19e1 WeiDuan Electronic Accessory (S.Z.) Co., Ltd. 19e8 Industrial Technology Research Institute@@ -11552,6 +11571,7 @@ 1bc5 AVIXE Technology (China) Ltd. 1bce Contac Cable Industrial Limited 1bcf Sunplus Innovation Technology Inc.+ 0007 Optical Mouse 1bd0 Hangzhou Riyue Electronic Co., Ltd. 1bde P-TWO INDUSTRIES, INC. 1bef Shenzhen Tongyuan Network-Communication Cables Co., Ltd@@ -11637,6 +11657,7 @@ 1e68 TrekStor GmbH & Co. KG 001b DataStation maxi g.u 1ebb NuCORE Technology, Inc.+1f28 Cal-Comp 2001 D-Link Corp. [hex] 0001 DWL-120 WIRELESS ADAPTER 0201 DHN-120 10Mb Home Phoneline Adapter@@ -11720,6 +11741,8 @@ 2222 MacAlly 0004 iWebKey Keyboard 4050 AirStick joystick+2227 SAMWOO Enterprise+ 3105 SKYDATA SKD-U100 2233 RadioShack Corporation 6323 USB Electronic Scale 22b8 Motorola PCS@@ -12198,6 +12221,9 @@ 2000 Flashdisk 9016 Sitecom 182d WL-022 802.11b Adapter+9148 GeoLab, Ltd+# All of GeoLab's devices share the same ID 0004.+ 0004 R3 Compatible Device 9710 MosChip Semiconductor 7703 MCS7703 Serial Port Adapter 7705 Printer cable