Rotenbanner.DeviceDb 1.0.20261001

dotnet add package Rotenbanner.DeviceDb --version 1.0.20261001
                    
NuGet\Install-Package Rotenbanner.DeviceDb -Version 1.0.20261001
                    
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.20261001" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Rotenbanner.DeviceDb" Version="1.0.20261001" />
                    
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.20261001
                    
#r "nuget: Rotenbanner.DeviceDb, 1.0.20261001"
                    
#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.20261001
                    
#: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.20261001
                    
Install as a Cake Addin
#tool nuget:?package=Rotenbanner.DeviceDb&version=1.0.20261001
                    
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. 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 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.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
Loading failed