Rotenbanner.DeviceDb 1.0.20260601

dotnet add package Rotenbanner.DeviceDb --version 1.0.20260601
                    
NuGet\Install-Package Rotenbanner.DeviceDb -Version 1.0.20260601
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Rotenbanner.DeviceDb" Version="1.0.20260601" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Rotenbanner.DeviceDb" Version="1.0.20260601" />
                    
Directory.Packages.props
<PackageReference Include="Rotenbanner.DeviceDb" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Rotenbanner.DeviceDb --version 1.0.20260601
                    
#r "nuget: Rotenbanner.DeviceDb, 1.0.20260601"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Rotenbanner.DeviceDb@1.0.20260601
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Rotenbanner.DeviceDb&version=1.0.20260601
                    
Install as a Cake Addin
#tool nuget:?package=Rotenbanner.DeviceDb&version=1.0.20260601
                    
Install as a Cake Tool

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.

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.

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.

What's, with, these, commas:

Sty,le.

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .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.20260601 92 6/1/2026
1.0.20260516 90 5/16/2026
1.0.20260501 98 5/1/2026
1.0.20260416 110 4/16/2026
1.0.20260401 106 4/1/2026
1.0.20260316 109 3/16/2026
1.0.20260301 100 3/1/2026
1.0.20260216 106 2/16/2026
1.0.20260201 114 2/1/2026
1.0.20260116 112 1/16/2026
1.0.20260105 109 1/5/2026