New Enclosure Types For "Convertible" Laptops


When is a laptop not a laptop?

When it's a 2-in-1 convertible device or tablet with attached keyboard.  To this end you may now encounter devices whose Chassis Type is changed from "Notebook" to "Convertible" after a BIOS update.  This change is being driven by the SMBIOS 3.0 Specification which is an industry standard.

So why do we care?  In many cases enterprise admins tasked with deploying new PCs will make a distinction between a Laptop and a Desktop and apply different policies or software accordingly. For a laptop, the Win32_SystemEnclosure class might show a value of 9 (Laptop) or 10 (Notebook) for the ChassisTypes field. If these are the only values used with a WMI query to identify a laptop then you may miss some devices.

With the new SMBIOS 3.0 Specification you would want to add the following:
  • 30 - Tablet
  • 31 - Convertible
  • 32 - Detachable 
For example, the new ThinkPad Yoga 370 will have a value of 31 since it can convert from a Notebook form factor to a Tablet form factor by rotating its screen on the 360 degree Yoga hinge.
If you need to check the chassis type of a system you can run the following PowerShell command:

Get-WmiObject -Class Win32_SystemEnclosure | Select-Object -Property ChassisTypes


Chassis
-------
{31}


Note:  It has been noted that Windows 7 may not recognize the new values and will return a value of 2 ("Unknown"). So if you still are using Windows 7 you may need to take this into account.

Comments

  1. its good to see this blog..informative content.

    lenovo Support

    ReplyDelete
  2. WinPE from the Windows 10 1511 ADK recognizes the Chassis as a value of 2 ("Unknown").

    The Windows 10 1607 ADK and higher does not have this issue.

    Furthermore, the the ZTI_Gather.wsf script from the Microsoft Deployment Toolkit Build 8443 does not recognize the Chassis value of 31.

    Line 417 needs to be modified to the following for this for it to work correctly :

    Case "8", "9", "10", "11", "12", "14", "18", "21", "31"

    ReplyDelete
  3. Nice! Thank you for the information. If you want you can create a .vbs file with the following script to query the chasis type:

    strComputer = "."

    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")

    Set colChassis = objWMIService.ExecQuery _
    ("Select * from Win32_SystemEnclosure")

    For Each objItem In colChassis
    strChassis = Join(objItem.ChassisTypes, ",")

    Select Case strChassis
    Case 0
    strCaseType = "Other"
    Case 1
    strCaseType = "Unknown"
    Case 3
    strCaseType = "Desktop"
    Case 4
    strCaseType = "Low Profile Desktop"
    Case 5
    strCaseType = "Pizza Box"
    Case 6
    strCaseType = "Mini Tower"
    Case 7
    strCaseType = "Tower"
    Case 8
    strCaseType = "Portable"
    Case 9
    strCaseType = "Laptop"
    Case 10
    strCaseType = "Notebook"
    Case 11
    strCaseType = "Hand-held"
    Case 12
    strCaseType = "Docking Station"
    Case 13
    strCaseType = "All-in-one"
    Case 14
    strCaseType = "Sub notebook"
    Case 15
    strCaseType = "Space-saving"
    Case 16
    strCaseType = "Lunch Box"
    Case 17
    strCaseType = "Main System Chassis"
    Case 18
    strCaseType = "Expansion chassis"
    Case 19
    strCaseType = "Sub chassis"
    Case 20
    strCaseType = "Bus Expansion Chassis"
    Case 21
    strCaseType = "Peripheral Chassis"
    Case 22
    strCaseType = "Storage chassis"
    Case 23
    strCaseType = "Rack mount chassis"
    Case 24
    strCaseType = "Sealed-case PC"
    Case 25
    strCaseType = "Multi-system chassis"
    Case 26
    strCaseType = "Compact PCI"
    Case 27
    strCaseType = "Advanced TCA"
    Case 28
    strCaseType = "Blade"
    Case 29
    strCaseType = "Blade Enclosure"
    Case 30
    strCaseType = "Tablet"
    Case 31
    strCaseType = "Convertible"
    Case 32
    strCaseType = "Detachable"
    Case 33
    strCaseType = "ioT Gateway"
    Case 34
    strCaseType = "Embedded PC"
    Case 35
    strCaseType = "Mini PC"
    Case 36
    strCaseType = "Stick PC"
    Case Else
    strCaseType = "Undefined"
    End Select
    WScript.Echo "Computer chassis type: " & strCaseType
    Next

    Hope you find it useful. :-)

    ReplyDelete

Post a Comment