Skip to content

Allow decoding of SMBIOS Type 11 serialnumbers #55

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

JohnAZoidberg
Copy link
Member

@JohnAZoidberg JohnAZoidberg commented Aug 7, 2024

They're the serialnumbers of what the system was originally assembled with in the factory.

TODO

  • Cleanup code
  • Make safer with fewer unwraps
  • Custom command, not in info
  • Make sure date is decoded correctly
  • Make sure it works on Framework 12
  • Make sure it works on Framework 13
  • Make sure it works on Framework 16
  • Make sure it works on Framework Desktop
> cargo build && sudo ./target/debug/framework_tool --serialnums                                                                                      
FRANMECP864201001H                                                                                                                            
  Mainboard                                                                                                                                   
  NME (Config 6) by CP, Dvt2 Phase (Monday, Week 20, 2024)                                                                                    
FRANPJCP8842010012                                                                                                                            
  Laptop                                                                                                                                      
  NPJ (Config 8) by CP, Dvt2 Phase (Monday, Week 20, 2024)                                                                                    
FRANJBCH8141750084                                                                                                                            
  Camera                                                                                                                                      
  NJB (Config 1) by CH, Dvt2 Phase (Friday, Week 17, 2024)                                                                                    
FRANJABQ814213002W                                                                                                                            
  Display                                                                                                                                     
  NJA (Config 1) by BQ, Dvt2 Phase (Wednesday, Week 21, 2024)                                                                                 
FRANGWATA1344300PG                                                                                                                            
  Battery                                                                                                                                     
  NGW (Config 1) by AT,   Mp Phase (Wednesday, Week 44, 2023)                                                                                 
FRANBTENA1414200X1                                                                                                                            
  Touchpad                                                                                                                                    
  NBT (Config 1) by EN,   Mp Phase (Tuesday, Week 14, 2024)                                                                                   
FRANBKENA1415100QM                                                                                                                            
  Keyboard                                                                                                                                    
  NBK (Config 1) by EN,   Mp Phase (Monday, Week 15, 2024)                                                                                    
FRANBFJYA1416603VX                                                                                                                            
  Fingerprint          (Only Pre-Built)                                                                                                       
  NBF (Config 1) by JY,   Mp Phase (Saturday, Week 16, 2024)                                                                                  
FRANBDCPA14181003C Unknown/Reserved                                                                                                           
FRANFJHAA1414500EA                                                                                                                            
  AudioDaughtercard                                                                                                                           
  NFJ (Config 1) by HA,   Mp Phase (Friday, Week 14, 2024)                                                                                    

@JohnAZoidberg JohnAZoidberg mentioned this pull request Feb 9, 2025
7 tasks
@JohnAZoidberg JohnAZoidberg force-pushed the smbios11-serialnums branch from 588d216 to d378c02 Compare June 2, 2025 16:42
@kiram9
Copy link
Member

kiram9 commented Jun 6, 2025

cfg0 will struggle with keyboard which also use 'B' for some languages

They're the serialnumbers of what the system was originally assembled
with in the factory.

TODO

- [ ] Cleanup code
- [ ] Make safer with fewer unwraps
- [ ] Custom command, not in info
- [ ] Make sure date is decoded correctly
- [ ] Support Framework 12
- [x] Support Framework 13
- [ ] Support Framework 16

Signed-off-by: Daniel Schaefer <[email protected]>
pub fn dump_oem_strings(strings: &SMBiosStringSet) {
for (i, s) in strings.into_iter().enumerate() {
let idx = i + 1;
let sn = match idx {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be cooler if you didn't use idx positions for decoding the serial number (remember what happened last time these positions changed?). Just put them in a big array, shuffle them, and try to tell what each of them is based on the serial number contents.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The order doesn't change, the factory also depends on it, as far as I remember.

Decoding the serialnumber is harder as we would have to embed all possible serialnumbers and I couldn't include those for unannounced projects.

@JohnAZoidberg JohnAZoidberg force-pushed the smbios11-serialnums branch from d378c02 to 35f0d76 Compare June 6, 2025 05:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants