diff --git a/inxi b/inxi index aede082..331a517 100755 --- a/inxi +++ b/inxi @@ -12795,44 +12795,46 @@ sub set_vendors { ['(Crucial|^(C[34]00$|(C300-)?CTF|(FC)?CT|DDAC|M4(\b|SSD))|-CT|Gizmo!)','Crucial','Crucial',''], # H10 HBRPEKNX0202A NVMe INTEL 512GB ['(\bINTEL\b|^(SSD(PAM|SA2)|HBR|(MEM|SSD)PEB?K|SSD(MCE|S[AC])))','\bINTEL\b','Intel',''], - # note: S[AV][1-9][0-9] can trigger false positives + # note: S[AV][1-9]\d can trigger false positives ['(K(ING)?STON|^(OM8P|RBU|S[AV][1234]00|S[HMN]S|SK[CY]|SQ5|SS200|SVP|SS0|SUV|SNV|T52|T[AB]29|Ultimate CF)|DataTraveler|DT\s?(DUO|Microduo|101)|HyperX|13fe\b)','(KINGSTON|13fe)','Kingston',''], # maybe SHS: SHSS37A SKC SUV # must come before samsung MU. NOTE: toshiba can have: TOSHIBA_MK6475GSX: mush: MKNSSDCR120GB_ ['(^MKN|Mushkin)','Mushkin','Mushkin',''], # MKNS # MU = Multiple_Flash_Reader too risky: |M[UZ][^L] HD103SI HD start risky # HM320II HM320II HM - ['(SAMSUNG|^(AWMB|[BC]DS20|[BC]WB|BJ[NT]|CJN|CUT|[DG]3 Station|DUO\b|DUT|CKT|[GS]2 Portable|GN|HD[0-9]{3}[A-Z]{2}$|(HM|SP)[0-9]{2}|HS\d|M[AB]G[0-9][FG]|MCC|MCBOE|MCG[0-9]+GC|[CD]JN|MZ|^G[CD][1-9][QS]|P[BM]\d|(SSD\s?)?SM\s?841)|^SSD\s?[89]\d{2}\s(DCT|PRO|QVD|\d+[GT]B)|\bEVO\b|SV[0-9]|[BE][A-Z][1-9]QT|YP\b|[CH]N-M|MMC[QR]E)','SAMSUNG','Samsung',''], # maybe ^SM, ^HM + ['(SAMSUNG|^(AWMB|[BC]DS20|[BC]WB|BJ[NT]|CJN|CUT|[DG]3 Station|DUO\b|DUT|CKT|[GS]2 Portable|GN|HD\d{3}[A-Z]{2}$|(HM|SP)\d{2}|HS\d|M[AB]G\d[FG]|MCC|MCBOE|MCG\d+GC|[CD]JN|MZ|^G[CD][1-9][QS]|P[BM]\d|(SSD\s?)?SM\s?841)|^SSD\s?[89]\d{2}\s(DCT|PRO|QVD|\d+[GT]B)|\bEVO\b|SV\d|[BE][A-Z][1-9]QT|YP\b|[CH]N-M|MMC[QR]E)','SAMSUNG','Samsung',''], # maybe ^SM, ^HM # Android UMS Composite?U1 - ['(SanDisk|^(ABLCD|AFGCE|D[AB]4|DX[1-9]|Extreme|Firebird|S[CD][0-9]{2}G|SD(S[S]?[ADQ]|SDW[1-9]|SEM[1-9]|SL([0-9]+)G|SU[0-9]|U(3\b|1\d0))|\d[STU])|ULTRA\s(FIT|trek|II)|Clip Sport|Cruzer|iXpand|SSD (Plus|U1[01]0) [1-9]|0781|X[1-6]\d{2})','(SanDisk|0781)','SanDisk',''], + ['(SanDisk|^(ABLCD|AFGCE|D[AB]4|DX[1-9]|Extreme|Firebird|S[CD]\d{2}G|SD(S[S]?[ADQ]|SDW[1-9]|SEM[1-9]|SL(\d+)G|SU\d|U(3\b|1\d0))|\d[STU])|ULTRA\s(FIT|trek|II)|Clip Sport|Cruzer|iXpand|SSD (Plus|U1[01]0) [1-9]|0781|X[1-6]\d{2})','(SanDisk|0781)','SanDisk',''], # these are HP/Sandisk cobranded. DX110064A5xnNMRI ids as HP and Sandisc ['(^DX[1-9])','^(HP\b|SANDDISK)','Sandisk/HP',''], # ssd drive, must come before seagate ST test - # must come before seagate because of ^STM - # not used: TM[0-9]{4}|[KL]0[1-9]|Y[0-9]{3}[A-Z]|4[DR]\d|3H\d|2F\d|7L\dL(250|500)|F[0-9]{3}L|6[2[B\d|BEGKLNVY]\d - ['^(MAXTOR|Atlas|STM[0-9])','^MAXTOR','Maxtor',''], # note M2 M3 is usually maxtor, but can be samsung # real, SSEAGATE Backup+; XP1600HE30002 | 024 HN (spinpoint) ; possible usb: 24AS # ST[numbers] excludes other ST starting devices - ['([S]?SEAGATE|^(^(Barra|Fire)Cuda|BUP|Expansion|(ATA\s|HDD\s)?ST[0-9]{2}|5AS|X[AFP])|Expansion Desk|FreeAgent|GoFlex|Backup(\+|\s?Plus)\s?(Hub)?|OneTouch|Slim\s?BK)','[S]?SEAGATE','Seagate',''], - ['^(WD|WL[0]9]|Western Digital|My (Book|Passport)|\d*LPCX|Elements|easystore|MD0|M000|EARX|EFRX|\d*EAVS|0JD|JP[CV]|[0-9]+(BEV|(00)?AAK|AAV|AZL|EA[CD]S)|PC\sSN|3200[AB]|2500[BJ]|EA[A-Z]S|20G2|5000[AB]|6400[AB]|7500[AB]|i HTS|00[ABL][A-Z]{2}|EZRX|SSC\b)','(^WDC|Western\s?Digital)','Western Digital',''], + ['([S]?SEAGATE|^(^(Barra|Fire)Cuda|BUP|Expansion|(ATA\s|HDD\s)?ST\d{2}|5AS|X[AFP])|Expansion Desk|FreeAgent|GoFlex|Backup(\+|\s?Plus)\s?(Hub)?|OneTouch|Slim\s?BK)','[S]?SEAGATE','Seagate',''], + ['^(WD|WL[0]9]|Western Digital|My (Book|Passport)|\d*LPCX|Elements|easystore|MD0|M000|EARX|EFRX|\d*EAVS|0JD|JP[CV]|\d+(BEV|(00)?AAK|AAV|AZL|EA[CD]S)|PC\sSN|3200[AB]|2500[BJ]|EA[A-Z]S|20G2|5000[AB]|6400[AB]|7500[AB]|i HTS|00[ABL][A-Z]{2}|EZRX|SSC\b)','(^WDC|Western\s?Digital)','Western Digital',''], # rare cases WDC is in middle of string ['(\bWDC\b|1002FAEX)','','Western Digital',''], ## THEN BETTER KNOWN ONESs ## ['^Acer','^Acer','Acer',''], # A-Data can be in middle of string - ['^(.*\bA-?DATA|ASP[0-9]|AX[MN]|CH11|HV[1-9]|IM2|HD[1-9]|HDD\s?CH|IUM|SX\d|Swordfish)','A-?DATA','A-Data',''], + ['^(.*\bA-?DATA|ASP\d|AX[MN]|CH11|HV[1-9]|IM2|HD[1-9]|HDD\s?CH|IUM|SX\d|Swordfish)','A-?DATA','A-Data',''], ['^(ASUS|ROG)','^ASUS','ASUS',''], # ROG ESD-S1C # ATCS05 can be hitachi travelstar but not sure ['^ATP','^ATP\b','ATP',''], # Force MP500 ['^(Corsair|Force\s|(Flash\s*)?(Survivor|Voyager)|Neutron|Padlock)','^Corsair','Corsair',''], - ['^(FUJITSU|MJA|MH[TVWYZ][0-9]|MP|MAP[0-9]|F\d00s?-)','^FUJITSU','Fujitsu',''], + ['^(FUJITSU|MJA|MH[TVWYZ]\d|MP|MAP\d|F\d00s?-)','^FUJITSU','Fujitsu',''], # MAB3045SP shows as HP or Fujitsu, probably HP branded fujitsu - ['^(MAB[0-9])','^(HP\b|FUJITSU)','Fujitsu/HP',''], + ['^(MAB\d)','^(HP\b|FUJITSU)','Fujitsu/HP',''], # note: 2012: wdc bought hgst ['^(HGST|Touro|54[15]0|7250|HC[CT]\d)','^HGST','HGST (Hitachi)',''], # HGST HUA - ['^((ATA\s)?Hitachi|HCS|HD[PST]|DK[0-9]|IC|(HDD\s)?HT|HU|HMS|HDE|0G[0-9]|IHAT)','Hitachi','Hitachi',''], + ['^((ATA\s)?Hitachi|HCS|HD[PST]|DK\d|IC|(HDD\s)?HT|HU|HMS|HDE|0G\d|IHAT)','Hitachi','Hitachi',''], # vb: VB0250EAVER but clashes with vbox; HP_SSD_S700_120G ;GB0500EAFYL GB starter too generic? - ['^(HP\b|[MV]B[0-6]|G[BJ][0-9]|DF[0-9]|F[BK]|0-9]|MM\d{4}|PSS|XR[0-9]{4}|c350|v[0-9]{3}[bgorw]$|x[0-9]{3}[w]$|VK0|HC[CPY]\d|EX9\d\d)','^HP','HP',''], - ['^(Lexar|LSD|JumpDrive|JD\s?Firefly|LX[0-9]|WorkFlow)','^Lexar','Lexar',''], # mmc-LEXAR_0xb016546c; JD Firefly; + ['^(HP\b|[MV]B[0-6]|G[BJ]\d|DF\d|F[BK]|0-9]|MM\d{4}|PSS|XR\d{4}|c350|v\d{3}[bgorw]$|x\d{3}[w]$|VK0|HC[CPY]\d|EX9\d\d)','^HP','HP',''], + ['^(Lexar|LSD|JumpDrive|JD\s?Firefly|LX\d|WorkFlow)','^Lexar','Lexar',''], # mmc-LEXAR_0xb016546c; JD Firefly; + # these must come before maxtor because STM + ['^STmagic','^STmagic','STmagic',''], + ['^(STMicro|SMI|CBA)','^(STMicroelectronics|SMI)','SMI (STMicroelectronics)',''], + # note M2 M3 is usually maxtor, but can be samsung: can conflict with Team: TM\d{4}| + ['^(MAXTOR|Atlas|L(250|500)|[KL]0[1-9]|Y\d{3}[A-Z]|STM\d|F\d{3}L)','^MAXTOR','Maxtor',''], # OCZSSD2-2VTXE120G is OCZ-VERTEX2_3.5 ['^(OCZ|Agility|APOC|D2|DEN|DEN|DRSAK|EC188|FTNC|GFGC|MANG|MMOC|NIMC|NIMR|PSIR|RALLY2|TALOS2|TMSC|TRSAK|VERTEX|Trion|Onyx|Vector[\s-]?15)','^OCZ[\s-]','OCZ',''], ['^(OWC|Aura|Mercury[\s-]?(Electra|Extreme))','^OWC\b','OWC',''], @@ -12841,15 +12843,15 @@ sub set_vendors { ['^(PNY|Hook\s?Attache|SSD2SC|(SSD7?)?EP7|CS\d{3}|Elite\s?P)','^PNY\s','PNY','','^PNY'], # note: get rid of: M[DGK] becasue mushkin starts with MK # note: seen: KXG50ZNV512G NVMe TOSHIBA 512GB | THNSN51T02DUK NVMe TOSHIBA 1024GB - ['(^[S]?TOS|^THN|TOSHIBA|TransMemory|^M[GKQ][0-9]|KBG4|^HDW|^SA[0-9]{2}G$|^(008|016|032|064|128)G[379E][0-9A]$|0930|KSG\d)','S?(TOSHIBA|0930)','Toshiba',''], # scsi-STOSHIBA_STOR.E_EDITION_ + ['(^[S]?TOS|^THN|TOSHIBA|TransMemory|^M[GKQ]\d|KBG4|^HDW|^SA\d{2}G$|^(008|016|032|064|128)G[379E][0-9A]$|0930|KSG\d)','S?(TOSHIBA|0930)','Toshiba',''], # scsi-STOSHIBA_STOR.E_EDITION_ ## LAST: THEY ARE SHORT AND COULD LEAD TO FALSE ID, OR ARE UNLIKELY ## # unknown: AL25744_12345678; ADP may be usb 2.5" adapter; udisk unknown: Z1E6FTKJ 00AAKS # SSD2SC240G726A10 MRS020A128GTS25C EHSAJM0016GB ['^2[\s-]?Power','^2[\s-]?Power','2-Power',''], ['^(3ware|9650SE)','^3ware','3ware (controller)',''], ['^5ACE','^5ACE','5ACE',''], # could be seagate: ST316021 5ACE - ['^(Aar(vex)?|AX[0-9]{2})','^AARVEX','AARVEX',''], - ['^(AbonMax|ASU[0-9])','^AbonMax','AbonMax',''], + ['^(Aar(vex)?|AX\d{2})','^AARVEX','AARVEX',''], + ['^(AbonMax|ASU\d)','^AbonMax','AbonMax',''], ['^Acasis','^Acasis','Acasis (hub)',''], ['^Acclamator','^Acclamator','Acclamator',''], ['^(Actions|HS USB Flash|10d6)','^(Actions|10d6)','Actions',''], @@ -12880,7 +12882,7 @@ sub set_vendors { ['^ASolid','^ASolid','ASolid',''], ['^(AVEXIR|AVSSD)','^AVEXIR','Avexir',''], ['^Axiom','^Axiom','Axiom',''], - ['^(Baititon|BT[0-9])','^Baititon','Baititon',''], + ['^(Baititon|BT\d)','^Baititon','Baititon',''], ['^Bamba','^Bamba','Bamba',''], ['^(Beckhoff)','^Beckhoff','Beckhoff',''], ['^Bell\b','^Bell','Packard Bell',''], @@ -12891,13 +12893,12 @@ sub set_vendors { ['^BIWIN','^BIWIN','BIWIN',''], ['^Blackpcs','^Blackpcs','Blackpcs',''], ['^(BlitzWolf|BW-?PSSD)','^BlitzWolf','BlitzWolf',''], - ['^(BlueRay|SDM[0-9])','^BlueRay','BlueRay',''], + ['^(BlueRay|SDM\d)','^BlueRay','BlueRay',''], ['^Bory','^Bory','Bory',''], ['^Braveeagle','^Braveeagle','BraveEagle',''], ['^(BUFFALO|BSC)','^BUFFALO','Buffalo',''], # usb: BSCR05TU2 ['^Bulldozer','^Bulldozer','Bulldozer',''], ['^BUSlink','^BUSlink','BUSlink',''], - ['^(STMicro|SMI|CBA)','^(STMicroelectronics|SMI)','SMI (STMicroelectronics)',''], ['^(Canon|MP49)','^Canon','Canon',''], ['^Centerm','^Centerm','Centerm',''], ['^(Centon|DS pro)','^Centon','Centon',''], @@ -13027,7 +13028,7 @@ sub set_vendors { ['^(lntenso|Intenso|(Alu|Basic|Business|Micro|c?Mobile|Premium|Rainbow|Slim|Speed|Twister|Ultra) Line|Rainbow)','^Intenso','Intenso',''], ['^(I-?O Data|HDCL)','^I-?O Data','I-O Data',''], ['^(INO-|i\.?norys)','^i\.?norys','i.norys',''], - ['^(Integrated[\s-]?Technology|IT[0-9]+)','^Integrated[\s-]?Technology','Integrated Technology',''], + ['^(Integrated[\s-]?Technology|IT\d+)','^Integrated[\s-]?Technology','Integrated Technology',''], ['^(Iomega|ZIP\b|Clik!)','^Iomega','Iomega',''], ['^ISOCOM','^ISOCOM','ISOCOM (Shenzhen Longsys Electronics)',''], ['^(Jaster|JS\d)','^Jaster','Jaster',''], @@ -13046,12 +13047,12 @@ sub set_vendors { ['^Kingrich','^Kingrich','Kingrich',''], ['^Kingsand','^Kingsand','Kingsand',''], ['KING\s?SHA\s?RE','KING\s?SHA\s?RE','KingShare',''], - ['^(KingSpec|ACSC|KS[DQ]|N[ET]-[0-9]|P3$|P4\b|PA[_-]?(18|25)|Q-180|T-(3260|64|128)|Z(\d\s|F\d))','^KingSpec','KingSpec',''], + ['^(KingSpec|ACSC|KS[DQ]|N[ET]-\d|P3$|P4\b|PA[_-]?(18|25)|Q-180|T-(3260|64|128)|Z(\d\s|F\d))','^KingSpec','KingSpec',''], ['^KingSSD','^KingSSD','KingSSD',''], # kingwin docking, not actual drive ['^(EZD|EZ-Dock)','','Kingwin Docking Station',''], ['^Kingwin','^Kingwin','Kingwin',''], - ['(KIOXIA|^K[BX]G[0-9])','KIOXIA','KIOXIA',''], # company name comes after product ID + ['(KIOXIA|^K[BX]G\d)','KIOXIA','KIOXIA',''], # company name comes after product ID ['^(KLEVV|NEO\sN|CRAS)','^KLEVV','KLEVV',''], ['^Kodak','^Kodak','Kodak',''], ['^(KUAIKAI|MSAM)','^KUAIKAI','KuaKai',''], @@ -13081,14 +13082,14 @@ sub set_vendors { ['^Maximus','^Maximus','Maximus',''], ['^Maxone','^Maxone','Maxone',''], ['^(Memorex|TravelDrive|TD\s?Classic)','^Memorex','Memorex',''], - ['^(MARSHAL\b|MAL[0-9])','^MARSHAL','Marshal',''], + ['^(MARSHAL\b|MAL\d)','^MARSHAL','Marshal',''], ['^MARVELL','^MARVELL','Marvell',''], ['^Maxsun','^Maxsun','Maxsun',''], ['^MDT\b','^MDT','MDT (rebuilt WD/Seagate)',''], # mdt rebuilds wd/seagate hdd # MD1TBLSSHD, careful with this MD starter!! ['^MD[1-9]','^Max\s*Digital','MaxDigital',''], ['^Medion','^Medion','Medion',''], - ['^(MEDIAMAX|WL[0-9]{2})','^MEDIAMAX','MediaMax',''], + ['^(MEDIAMAX|WL\d{2})','^MEDIAMAX','MediaMax',''], ['^Mengmi','^Mengmi','Mengmi',''], ['^MGTEC','^MGTEC','MGTEC',''], # must come before micron @@ -13107,8 +13108,8 @@ sub set_vendors { ['^(Monster\s)+(Digital)?|OD[\s-]?ADVANCE','^(Monster\s)+(Digital)?','Monster Digital',''], ['^Morebeck','^Morebeck','Morebeck',''], ['^(Moser\s?Bear|MBIL)','^Moser\s?Bear','Moser Bear',''], - ['^(Motile|SSM[0-9])','^Motile','Motile',''], - ['^(Motorola|XT[0-9]{4})','^Motorola','Motorola',''], + ['^(Motile|SSM\d)','^Motile','Motile',''], + ['^(Motorola|XT\d{4})','^Motorola','Motorola',''], ['^Moweek','^Moweek','Moweek',''], #MRMAD4B128GC9M2C ['^(MRMA|Memoright)','^Memoright','Memoright',''], @@ -13116,7 +13117,7 @@ sub set_vendors { ['^MTASE','^MTASE','MTASE',''], ['^MTRON','^MTRON','MTRON',''], ['^(MyDigitalSSD|BP4)','^MyDigitalSSD','MyDigitalSSD',''], # BP4 = BulletProof4 - ['^(Neo\s*Forza|NFS[0-9])','^Neo\s*Forza','Neo Forza',''], + ['^(Neo\s*Forza|NFS\d)','^Neo\s*Forza','Neo Forza',''], ['^(Netac|S535N)','^Netac','Netac',''], # NGFF is a type, like msata, sata ['^Nik','^Nikimi','Nikimi',''], @@ -13132,7 +13133,7 @@ sub set_vendors { ['^(Pasoul|OASD)','^Pasoul','Pasoul',''], ['^(Patriot|PS[8F]|P2\d{2}|PBT|VPN|Viper|Burst|Blast|Blaze|Pyro|Ignite)','^Patriot([-\s]?Memory)?','Patriot',''],#Viper M.2 VPN100 ['^PERC\b','','Dell PowerEdge RAID Card',''], # ssd - ['(PHISON[\s-]?|ESR[0-9])','PHISON[\s-]?','Phison',''],# E12-256G-PHISON-SSD-B3-BB1 + ['(PHISON[\s-]?|ESR\d)','PHISON[\s-]?','Phison',''],# E12-256G-PHISON-SSD-B3-BB1 ['^Pioneer','Pioneer','Pioneer',''], ['^Platinet','Platinet','Platinet',''], ['^(PLEXTOR|PX-)','^PLEXTOR','Plextor',''], @@ -13141,7 +13142,7 @@ sub set_vendors { ['^(-?Pretec|UltimateGuard)','-?Pretec','Pretec',''], ['^(Prolific)','^Prolific( Technolgy Inc\.)?','Prolific',''], # PS3109S9 is the result of an error condition with ssd drive - ['QEMU','^[0-9]*QEMU( QEMU)?','QEMU',''], # 0QUEMU QEMU HARDDISK + ['QEMU','^\d*QEMU( QEMU)?','QEMU',''], # 0QUEMU QEMU HARDDISK ['(^Quantum|Fireball)','^Quantum','Quantum',''], ['^QUMO','^QUMO','Qumo',''], ['^(R[3-9]|AMD\s?(RADEON)?|Radeon)','AMD\s?(RADEON)?','AMD Radeon',''], # ssd @@ -13165,14 +13166,14 @@ sub set_vendors { ['^(Sea\s?Tech|Transformer)','^Sea\s?Tech','Sea Tech',''], ['^SigmaTel','^SigmaTel','SigmaTel',''], # DIAMOND_040_GB - ['^(SILICON\s?MOTION|SM[0-9]|090c)','^(SILICON\s?MOTION|090c)','Silicon Motion',''], + ['^(SILICON\s?MOTION|SM\d|090c)','^(SILICON\s?MOTION|090c)','Silicon Motion',''], ['(Silicon[\s-]?Power|^SP[CP]C|^Silicon|^Diamond|^HasTopSunlightpeed)','Silicon[\s-]?Power','Silicon Power',''], ['^SINTECHI?','^SINTECHI?','SinTech (adapter)',''], ['^SiS\b','^SiS','SiS',''], ['Smartbuy','\s?Smartbuy','Smartbuy',''], # SSD Smartbuy 60GB; mSata Smartbuy 3 # HFS128G39TND-N210A; seen nvme with name in middle ['(SK\s?HYNIX|^HF[MS]|^H[BC]G|^BC\d{3}|^SC[234]\d\d\sm?SATA)','\s?SK\s?HYNIX','SK Hynix',''], - ['(hynix|^HAG[0-9]|h[BC]8aP|PC\d{3})','hynix','Hynix',''],# nvme middle of string, must be after sk hynix + ['(hynix|^HAG\d|h[BC]8aP|PC\d{3})','hynix','Hynix',''],# nvme middle of string, must be after sk hynix ['^SH','','Smart Modular Tech.',''], ['^Skill','^Skill','Skill',''], ['^(SMART( Storage Systems)?|TX)','^(SMART( Storage Systems)?)','Smart Storage Systems',''], @@ -13180,7 +13181,6 @@ sub set_vendors { ['^(S[FR]-|Sony|IM9)','^Sony','Sony',''], ['^(SSSTC|CL1-)','^SSSTC','SSSTC',''], ['^STE[CK]','^STE[CK]','sTec',''], # wd bought this one - ['^STmagic','^STmagic','STmagic',''], ['^STORFLY','^STORFLY','StorFly',''], ['\dSUN\d','^SUN(\sMicrosystems)?','Sun Microsystems',''], ['^Sundisk','^Sundisk','Sundisk',''], @@ -13189,7 +13189,7 @@ sub set_vendors { ['^SuperSSpeed','^SuperSSpeed','SuperSSpeed',''], # NOTE: F[MNETU] not reliable, g.skill starts with FM too: # Seagate ST skips STT. - ['^(Super\s*Talent|STT|F[HTZ]M[0-9]|PicoDrive|Teranova)','','Super Talent',''], + ['^(Super\s*Talent|STT|F[HTZ]M\d|PicoDrive|Teranova)','','Super Talent',''], ['^(SF|Swissbit)','^Swissbit','Swissbit',''], # ['^(SUPERSPEED)','^SUPERSPEED','SuperSpeed',''], # superspeed is a generic term ['^Taisu','^Taisu','Taisu',''], @@ -13197,7 +13197,7 @@ sub set_vendors { ['^Tammuz','^Tammuz','Tammuz',''], ['^TANDBERG','^TANDBERG','Tanberg',''], ['^(TC[\s-]*SUNBOW|X3\s\d+[GT])','^TC[\s-]*SUNBOW','TCSunBow',''], - ['^(TDK|TF[1-9][0-9]|LoR)','^TDK','TDK',''], + ['^(TDK|TF[1-9]\d|LoR)','^TDK','TDK',''], ['^TEAC','^TEAC','TEAC',''], ['^(TEAM|T[\s-]?Create|L\d\s?Lite|T\d{3,}[A-Z]|TM\d|(Dark\s?)?L3\b)','^TEAM(\s*Group)?','TeamGroup',''], ['^(Teclast|CoolFlash)','^Teclast','Teclast',''], @@ -13215,7 +13215,7 @@ sub set_vendors { ['(^(Transcend|SSD\s|F)?TS|JetDrive|JetFlash|^USDU|^EZEX|^1307)','\b(Transcend|1307)\b','Transcend',''], ['^(TrekStor|DS (maxi|pocket)|DataStation)','^TrekStor','TrekStor',''], ['^Turbox','^Turbox','Turbox',''], - ['^(TwinMOS|TW[0-9])','^TwinMOS','TwinMOS',''], + ['^(TwinMOS|TW\d)','^TwinMOS','TwinMOS',''], # note: udisk means usb disk, it's not a vendor ID ['^UDinfo','^UDinfo','UDinfo',''], ['^UMAX','^UMAX','UMAX',''], @@ -13246,7 +13246,7 @@ sub set_vendors { ['^XPG','^XPG','XPG',''], ['^XrayDisk','^XrayDisk','XrayDisk',''], ['^Xstar','^Xstar','Xstar',''], - ['^(XUM|HX[0-9])','^XUM','XUM',''], + ['^(XUM|HX\d)','^XUM','XUM',''], ['^XUNZHE','^XUNZHE','XUNZHE',''], ['^(Yangtze|ZhiTai|PC00[5-9]|SC00[1-9])','^Yangtze(\s*Memory)?','Yangtze Memory',''], ['^(Yeyian|valk)','^Yeyian','Yeyian',''],