############### # Device Detector - The Universal Device Detection library for parsing User Agents # # @link http://piwik.org # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later ############### 'Tunisie Telecom': regex: 'StarTrail TT[);/ ]' device: 'smartphone' model: 'StarTrail' # SFR SFR: regex: 'StarShine|StarTrail|STARADDICT|StarText|StarNaute|StarXtrem|StarTab' device: 'smartphone' models: - regex: 'StarXtrem[);/ ]' model: 'StarXtrem' # ZTE - regex: 'StarTrail ?4[);/ ]' model: 'StarTrail 4' # ZTE Blade Q - regex: 'StarTrail III[);/ ]' model: 'StarTrail 3' # ZTE - regex: 'StarTrail II[);/ ]' model: 'StarTrail 2' # Huawei Ascend Y200 - regex: 'StarTrail[);/ ]' model: 'StarTrail' # ZTE - regex: 'StarShine II[);/ ]' model: 'StarShine 2' # ZTE - regex: 'StarShine[);/ ]' model: 'StarShine' # Huawei U8180 - regex: 'STARADDICT III[);/ ]' model: 'Staraddict 3' # Coolpad 8861U - regex: 'STARADDICT II Plus[);/ ]' model: 'Staraddict 2 Plus' # ZTE Grand X - regex: 'STARADDICT II[);/ ]' model: 'Staraddict 2' # Alcatel One Touch 995 - regex: 'STARADDICT[);/ ]' model: 'Staraddict' # ZTE - regex: 'StarText II[);/ ]' model: 'StarText 2' # ZTE - regex: 'StarText[);/ ]' model: 'StarText' # ZTE - regex: 'StarNaute II[);/ ]' model: 'StarNaute 2' # ZTE - regex: 'StarNaute[);/ ]' model: 'StarNaute' # ZTE Amigo - regex: 'StarTab' model: 'StarTab' device: 'tablet' - regex: '((?:StarShine|StarTrail|STARADDICT|StarText|StarNaute|StarXtrem)[^;/]*) Build' model: '$1' # HTC HTC: regex: 'HTC|Sprint (?:APA|ATP)|ADR(?!910L)[a-z0-9]+|NexusHD2|Amaze[ _]4G[);/ ]|(Desire|Sensation|Evo ?3D|IncredibleS|Wildfire|Butterfly)[ _]?([^;/]+) Build|(Amaze[ _]4G|One ?[XELSV\+]+)[);/ ]|SPV E6[05]0|One M8|X525a|PG86100|PC36100|XV6975|PJ83100[);/ ]|2PYB2' device: 'smartphone' models: # explicit smartphone models - regex: 'XV6975[);/ ]' model: 'Imagio' - regex: 'PG86100[);/ ]' model: 'Evo 3G' - regex: 'PC36100[);/ ]' model: 'Evo 4G' - regex: 'PJ83100[);/ ]' model: 'One X' - regex: 'ADR6300' model: 'Droid Incredible' - regex: 'ADR6400L' model: 'ThunderBolt' - regex: 'ADR6410LRA' model: 'Droid Incredible 3' - regex: 'SPV E600' model: 'Excalibur' - regex: 'SPV E650' model: 'Vox' - regex: 'X525a' model: 'One X+' - regex: '2PYB2' model: 'Bolt' - regex: 'NexusHD2' # custom rom for hd2 model: 'HD2' - regex: 'HTC[ _\-]P715a' device: 'tablet' model: 'P715a' - regex: 'HTC[ _\-]Flyer Build' device: 'tablet' model: 'Flyer' - regex: 'HTC[ _\-]Flyer[ _\-]([\w]{1,5})' device: 'tablet' model: 'Flyer $1' - regex: 'HTC[ _\-]One[ _\-]max[);/ ]' device: 'phablet' model: 'One max' - regex: 'HTC[ _]([^/;]+) [0-9]+(?:\.[0-9]+)+ Build' model: '$1' - regex: 'HTC[ _]([^/;]+) Build' model: '$1' - regex: 'HTC[ _]([a-z0-9]+[ _\-]?(?:[a-z0-9_+\-])*)' model: '$1' - regex: 'USCCHTC(\d+)' model: '$1' - regex: 'Sprint (ATP.*) Build' device: 'tablet' model: '$1 (Sprint)' - regex: 'Sprint (APA.*) Build' model: '$1 (Sprint)' - regex: 'HTC(?:[\-/ ])?([a-z0-9\-_]+)' model: '$1' - regex: 'HTC;(?: )?([a-z0-9 ]+)' model: '$1' - regex: '(Desire|Sensation|Evo ?3D|IncredibleS|Wildfire|Butterfly)[ _]?([^;/]+) Build' model: '$1 $2' - regex: '(Amaze[ _]4G|One ?[XELSV\+]*) Build' model: '$1' - regex: '(ADR[^;/]+) Build' model: '$1' - regex: '(ADR[a-z0-9]+)' model: '$1' - regex: '(One M8)' model: '$1' # microsoft Microsoft: regex: 'KIN\.(One|Two)|RM-(?:1031|106[57]|109[02]|1099|1109|1114|1127|1141|1154)|Microsoft; Lumia' device: 'smartphone' models: - regex: 'KIN\.(One|Two)' device: 'feature phone' model: 'Kin $1' - regex: 'RM-1031' model: 'Lumia 532' - regex: 'RM-106[57]' model: 'Lumia 640 XL' - regex: 'RM-109[02]' model: 'Lumia 535' - regex: 'RM-1099' model: 'Lumia 430' - regex: 'RM-1109' model: 'Lumia 640' - regex: 'RM-1114' model: 'Lumia 435' - regex: 'RM-1127' model: 'Lumia 550' - regex: 'RM-1141' model: 'Lumia 540' - regex: 'RM-1154' model: 'Lumia 650' - regex: 'Microsoft; Lumia ([^;/)]+)[;/)]' model: 'Lumia $1' # NOKIA Nokia: regex: 'Nokia|Lumia|Maemo RX|portalmmm/2\.0 N7|portalmmm/2\.0 NK|nok[0-9]+|Symbian.*\s([a-z0-9]+)$|RX-51 N900|TA-[0-9]{4} Build' device: 'smartphone' models: - regex: 'RX-51 N900' model: 'N900' - regex: 'Nokia(N[0-9]+)' model: '$1' - regex: 'Nokia-([a-z0-9]+)' model: 'N$1' - regex: 'NOKIA; (?!Qt;)([a-z0-9\- ]+)' model: '$1' - regex: 'NOKIA[ _]?([a-z0-9\-]+)' model: '$1' - regex: 'NOKIA/([a-z0-9 ]+)' model: '$1' - regex: '(Lumia [a-z0-9\-]+ XL)' device: 'phablet' model: '$1' - regex: '(Lumia [a-z0-9\-]+)' model: '$1' - regex: 'Maemo RX-51 ([a-z0-9]+)' model: '$1' - regex: 'Maemo RX-34' model: 'N800' - regex: 'NokiaInternal|Nokia-WAP-Toolkit|Nokia-MIT-Browser|Nokia Mobile|Nokia Browser|Nokia/Series' model: '' - regex: 'portalmmm/2\.0 (N7[37]|NK[a-z0-9]+)' model: '$1' - regex: 'nok([0-9]+)' model: '$1' - regex: 'Symbian.*\s([a-z0-9]+)$' device: 'feature phone' model: '$1' # Nokia branded phones by HMD Global - regex: 'TA-10(07|23|29|35)' model: '2' - regex: 'TA-10(20|28|32|38)' model: '3' - regex: 'TA-10(24|27|44|53)' model: '5' - regex: 'TA-10(00|03|21|25|33|39)' model: '6' - regex: 'TA-10(04|12)' model: '8' # CnM CnM: regex: 'CnM' device: 'tablet' models: - regex: 'CnM[ \-](?:Touchpad|TP)[ \-]([0-9\.]+)' model: 'Touchpad $1' # RIM/BlackBerry RIM: regex: 'BB10;|BlackBerry|rim[0-9]+|PlayBook|STV100-4|STH100-2' device: 'smartphone' models: - regex: 'STV100-4' model: 'BlackBerry Priv' - regex: 'STH100-2' model: 'BlackBerry DTEK50' - regex: 'BB10; ([a-z0-9\- ]+)\)' model: 'BlackBerry $1' - regex: 'PlayBook.+RIM Tablet OS' model: 'BlackBerry Playbook' device: 'tablet' - regex: 'BlackBerry(?: )?([a-z0-9]+)' model: 'BlackBerry $1' - regex: 'rim([0-9]+)' model: 'BlackBerry $1' - regex: 'BlackBerry' model: 'BlackBerry' # PALM Palm: regex: '(?:Pre|Pixi)/(\d+)\.(\d+)|Palm|Treo|Xiino' device: 'smartphone' models: - regex: '((?:Pre|Pixi))/(\d+\.\d+)' model: '$1 $2' - regex: 'Palm(?:[ \-])?((?!OS|Source|scape)[a-z0-9]+)' model: '$1' - regex: 'Treo([a-z0-9]+)' model: 'Treo $1' - regex: 'Tungsten' model: 'Tungsten' - regex: 'Xiino|Palmscape' # Browser for Palm OS only model: '' # HP HP: regex: 'TouchPad/\d+\.\d+|hp-tablet|HP ?iPAQ|webOS.*P160U|HP Slate|HP [78]|Compaq [7|8]|HP; [^;/)]+' device: 'smartphone' models: - regex: 'HP Slate 6 Voice Tab' model: 'Slate 6 VoiceTab' device: 'phablet' - regex: 'HP ([78][^/;]*) Build' model: 'Slate $1' device: 'tablet' - regex: 'Compaq ([78][^/;]*) Build' model: 'Compaq $1' device: 'tablet' - regex: 'HP Slate ?(.+) Build' model: 'Slate $1' device: 'tablet' - regex: 'HP Slate ?([0-9]+)' model: 'Slate $1' device: 'tablet' - regex: 'TouchPad/(\d+\.\d+)|hp-tablet' model: 'TouchPad' device: 'tablet' - regex: 'HP; ([^;/)]+)' model: '$1' - regex: 'HP(?: )?iPAQ(?: )?([a-z0-9]+)' model: 'iPAQ $1' - regex: 'webOS.*(P160U)' model: 'Veer' # TiPhone TiPhone: regex: 'TiPhone ?([a-z0-9]+)' device: 'smartphone' model: '$1' # Apple Apple: regex: '(?:iTunes-)?AppleTV|(?:Apple-)?(?:iPad|iPhone)|iPh[0-9],[0-9]|CFNetwork' models: # specific smartphone devices - regex: '(?:Apple-)?iPh(?:one)?1[C,]1' model: 'iPhone' device: 'smartphone' - regex: '(?:Apple-)?iPh(?:one)?1[C,]2' model: 'iPhone 3G' device: 'smartphone' - regex: '(?:Apple-)?iPh(?:one)?2[C,]1' model: 'iPhone 3GS' device: 'smartphone' - regex: '(?:Apple-)?iPh(?:one)?3[C,][123]' model: 'iPhone 4' device: 'smartphone' - regex: '(?:Apple-)?iPh(?:one)?4[C,]1' model: 'iPhone 4S' device: 'smartphone' - regex: '(?:Apple-)?iPh(?:one)?5[C,][12]' model: 'iPhone 5' device: 'smartphone' - regex: '(?:Apple-)?iPh(?:one)?5[C,][34]' model: 'iPhone 5C' device: 'smartphone' - regex: '(?:Apple-)?iPh(?:one)?6[C,][12]' model: 'iPhone 5S' device: 'smartphone' - regex: '(?:Apple-)?iPh(?:one)?7[C,]1' model: 'iPhone 6 Plus' device: 'phablet' - regex: '(?:Apple-)?iPh(?:one)?7[C,]2' model: 'iPhone 6' device: 'smartphone' - regex: '(?:Apple-)?iPh(?:one)?8[C,]1' model: 'iPhone 6s' device: 'smartphone' - regex: '(?:Apple-)?iPh(?:one)?8[C,]2' model: 'iPhone 6s Plus' device: 'phablet' - regex: '(?:Apple-)?iPh(?:one)?8[C,]4' model: 'iPhone SE' device: 'smartphone' - regex: '(?:Apple-)?iPh(?:one)?9[C,][13]' model: 'iPhone 7' device: 'smartphone' - regex: '(?:Apple-)?iPh(?:one)?9[C,][24]' model: 'iPhone 7 Plus' device: 'phablet' - regex: '(?:Apple-)?iPh(?:one)?10[C,][14]' model: 'iPhone 8' device: 'smartphone' - regex: '(?:Apple-)?iPh(?:one)?10[C,][25]' model: 'iPhone 8 Plus' device: 'phablet' - regex: '(?:Apple-)?iPh(?:one)?10[C,][36]' model: 'iPhone X' device: 'phablet' # specific tablet devices - regex: '(?:Apple-)?iPad1[C,]1' model: 'iPad' device: 'tablet' - regex: '(?:Apple-)?iPad2[C,][1234]' model: 'iPad 2' device: 'tablet' - regex: '(?:Apple-)?iPad2[C,][567]' model: 'iPad Mini' device: 'tablet' - regex: '(?:Apple-)?iPad3[C,][123]' model: 'iPad 3' device: 'tablet' - regex: '(?:Apple-)?iPad3[C,][456]' model: 'iPad 4' device: 'tablet' - regex: '(?:Apple-)?iPad4[C,][123]' model: 'iPad Air' device: 'tablet' - regex: '(?:Apple-)?iPad4[C,][456]' model: 'iPad Mini 2' device: 'tablet' - regex: '(?:Apple-)?iPad4[C,][789]' model: 'iPad Mini 3' device: 'tablet' - regex: '(?:Apple-)?iPad5[C,][12]' model: 'iPad Mini 4' device: 'tablet' - regex: '(?:Apple-)?iPad5[C,][34]' model: 'iPad Air 2' device: 'tablet' - regex: '(?:Apple-)?iPad6[C,][34]' model: 'iPad Pro 9.7' device: 'tablet' - regex: '(?:Apple-)?iPad6[C,][78]' model: 'iPad Pro 12.9' device: 'tablet' - regex: '(?:Apple-)?iPad6[C,](?:11|12)' model: 'iPad 5' device: 'tablet' - regex: '(?:Apple-)?iPad7[C,][12]' model: 'iPad Pro 2 12.9' device: 'tablet' - regex: '(?:Apple-)?iPad7[C,][34]' model: 'iPad Pro 10.5' device: 'tablet' - regex: '(?:Apple-)?iPad7[C,][56]' model: 'iPad 6' device: 'tablet' - regex: '(?:iTunes-)?AppleTV' model: 'Apple TV' device: 'tv' - regex: '(?:Apple-)?iPad' model: 'iPad' device: 'tablet' - regex: '(?:Apple-)?iPhone ?(3GS?|4S?|5[CS]?|6(:? Plus)?)?' model: 'iPhone $1' device: 'smartphone' # micromax MicroMax: regex: '(MicroMax[ \-\_]?[a-z0-9]+|Q327)' device: 'smartphone' models: - regex: 'E481' model: 'Canvas 5' - regex: 'Q327' model: 'Bolt' - regex: 'MicroMax(?:[ \-\_])?(P[a-z0-9]+)' model: '$1' device: 'tablet' - regex: 'MicroMax(?:[ \-\_])?([a-z0-9]+)' model: '$1' # 3Q 3Q: regex: '(AC0731B|AC1024C|AC7803C|BC9710AM|EL72B|LC0720C|LC0723B|LC0725B|LC0804B|LC0808B|LC0809B|LC0810C|LC0816C|LC0901D|LC1016C|MT0724B|MT0729B|MT0729D|MT0811B|OC1020A|RC0709B|RC0710B|RC0718C|RC0719H|RC0721B|RC0722C|RC0726B|RC0734H|RC0743H|RC0817C|RC1018C|RC1019G|RC1025F|RC1301C|RC7802F|RC9711B|RC9712C|RC9716B|RC9717B|RC9724C|RC9726C|RC9727F|RC9730C|RC9731C|TS0807B|TS1013B|VM0711A|VM1017A|RC0813C|QS9719D|QS9718C|QS9715F|QS1023H|QS0815C|QS0730C|QS0728C|QS0717D|QS0716D|QS0715C|MT7801C)' device: 'tablet' model: '$1' # 4Good 4Good: regex: '4Good[ _]|(?:4Good)?(S450m [43]G|S555m 4G|S501m 3G|T700i_3G|Light A103)' device: 'smartphone' models: - regex: 'T700i_3G' model: 'T700i 3G' device: 'tablet' - regex: '(S(?:450m|555m|501m)[_ ][43]G|Light A103)' model: '$1' - regex: '4Good[ _]([^;/]+) Build' model: '$1' - regex: '4Good[ _]([^);/ ]+)' model: '$1' # Bravis Bravis: regex: 'Bravis|A501 Bright|NB(?:10[56]|751|7[145])|NP101' device: 'smartphone' models: - regex: 'A501 Bright' model: 'A501 Bright' - regex: 'Bravis[_ ]([^;\)]+) Build' model: '$1' - regex: '(NB(?:10[156]|751|7[145])|NP101)' model: '$1' device: 'tablet' # Acer Acer: regex: 'acer|(?