Rotenbanner.DeviceDb
1.0.20261001
dotnet add package Rotenbanner.DeviceDb --version 1.0.20261001
NuGet\Install-Package Rotenbanner.DeviceDb -Version 1.0.20261001
<PackageReference Include="Rotenbanner.DeviceDb" Version="1.0.20261001" />
<PackageVersion Include="Rotenbanner.DeviceDb" Version="1.0.20261001" />
<PackageReference Include="Rotenbanner.DeviceDb" />
paket add Rotenbanner.DeviceDb --version 1.0.20261001
#r "nuget: Rotenbanner.DeviceDb, 1.0.20261001"
#:package Rotenbanner.DeviceDb@1.0.20261001
#addin nuget:?package=Rotenbanner.DeviceDb&version=1.0.20261001
#tool nuget:?package=Rotenbanner.DeviceDb&version=1.0.20261001
Device Model to Display Name Database (C#)
A library for converting Apple and Android device models into their human readable names:
using Rotenbanner;
DeviceNameLookup.TryGetDisplayName("iPhone10,6"); // "iPhone X"
DeviceNameLookup.TryGetDisplayName("GT-S6810B"); // "Samsung Galaxy Fame"
DeviceNameLookup.TryGetDisplayName("iPhone10,7"); // null, no such device
The conversion is performed using the embedded database. No network requests are made. Available on nuget.
License
The source code in this repository is licensed under MIT License.
I believe the database itself is a collection of facts, and hence not copyrightable.
Versioning
This package is updated automatically every 2 weeks and a new version will be published with a version 1.0.YEAR|MONTH|DAY.
For example, version 1.0.20260105 would be a database built on 2026-01-05.
See the repository's Github Action for the implementation.
This versioning scheme allows you to add wildcard dependency <PackageReference Include="Rotenbanner.DeviceDb" Version="1.0.*" /> and get the latest database on every dotnet restore.
Alternatives to Consider
https://github.com/NaverPayDev/device-info, Typescript. Android and iOS devices.
https://github.com/zfdang/android-device-model-to-marketing-name, Android flavored Java, only Android devices.
https://github.com/jaredrummler/AndroidDeviceNames, Android flavored Java, only Android devices.
https://github.com/souzainf3/RNDeviceName, Swift, Apple devices only.
https://github.com/kimdaehee0824/DeviceNameKit, Swift, Apple devices only. Does some insane intriguing network requests.
https://www.npmjs.com/package/ios-device-list, Javascript, iOS only.
Updating Database
To update the DB manually, see Generator Readme
Q & A:
Can I use this on Unity:
I guess? I guess you could call DeviceNameLookup.TryGetDisplayName(SystemInfo.deviceModel) but I haven't tested if this works. Specifically I haven't tested that a) Embedded Resources work b) BrotliStream works on Unity.
Removing BrotliStream is easy if need be and replacing Embedded Resource with a file seems easy too.
In short, Unity support is not in the scope of this library but it might incidentally work.
I checked the source and what the heck bro, what's this Trie stuff:
This library was initally intended to be a pure javascript EMCAScript library.
Since embedding in JS means having a huge string literal of base64 or a huge integer table, I really wanted to squeeze the database where possible.
Since names have a lot of redundancy, especially prefix redundancy, a trie compresses them well.
Okay, sure, the filesize explains it... Except I could just take the CSV, zip it and it would be smaller than the trie mess:
Yep. Turns out that lookup structure from the model name to the display-name-trie-node takes quite a bit of space. Sure, we could have computed it at load time... but I had this misconception that I could simply mmap the resource and minimize unevictable memory usage.
It could be made better, but realistically, who cares of a few hundred kilobytes.
So you want me to include your opaque binary blob, with poor justification:
Yuppers. I really recommend checking the Generator Readme and build your own database. I promise the included database doesn't contain anything weird but in the long term, it's cheaper to verify than to trust. Also, by generating the DB yourself you get the latest devices there.
Isn't using a wildcard dependency harmful, unreproducible and a supply chain risk on steroids:
You weren't going to read the source code anyway. And you didn't decompile the published nuget package to see if it's actually built from this source. You are trusting some nickname on internet, the wildcard is not changing that. When in doubt, build your own database.
Does this project use AI:
All code is written and designed by a me, a human. An AI powered security review has been run for the project, which found no issues but pointed out AssemblyVersion did not match the package version.
Hence this fix in the publishing pipeline can be considered AI-assisted.
What's, with, these, commas:
Sty,le.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- No dependencies.
-
net10.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.20261001 | 69 | 10/1/2026 |
| 1.0.20260917 | 93 | 9/17/2026 |
| 1.0.20260901 | 102 | 9/1/2026 |
| 1.0.20260816 | 111 | 8/16/2026 |
| 1.0.20260801 | 125 | 8/1/2026 |
| 1.0.20260716 | 110 | 7/16/2026 |
| 1.0.20260701 | 123 | 7/1/2026 |
| 1.0.20260616 | 123 | 6/16/2026 |
| 1.0.20260601 | 114 | 6/1/2026 |
| 1.0.20260516 | 106 | 5/16/2026 |
| 1.0.20260501 | 118 | 5/1/2026 |
| 1.0.20260416 | 125 | 4/16/2026 |
| 1.0.20260401 | 122 | 4/1/2026 |
| 1.0.20260316 | 122 | 3/16/2026 |
| 1.0.20260301 | 116 | 3/1/2026 |
| 1.0.20260216 | 124 | 2/16/2026 |
| 1.0.20260201 | 132 | 2/1/2026 |
| 1.0.20260116 | 126 | 1/16/2026 |
| 1.0.20260105 | 122 | 1/5/2026 |