Dell Latitude 3500
The appearance of the BIOS is pretty simple and not very colorful, so it might work well with OCR software. However, it requires the user to use a mouse.
This device has a diagnostic LED which may visualize beep codes in some cases. See the "Diagnostic LED" section in the service manual for more details.
The service manual also contains shortcuts which are needed to trigger certain features, such as the boot menu and settings (
fwupd does not support this device yet.
The BIOS accepts
Firmware data path
The BIOS stores logs and recovery images in
Recovery images are stored in
esp/EFI/dell/bios/recovery and are 14 MB in size. It appears that there will only be two images at the same time,
Those files will be created when the BIOS was updated.
esp/EFI/dell/logs contains XML files which contain diagnostics data (SupportAssist).
It appears that there will only be two logs at the same time,
Those files will be created when an error happened.
Example log (
<?xml version="1.0" encoding="UTF-8"?> <SupportAssistPrebootDiagnosticLog> <Schema>1.0.0</Schema> <LogNumber>2</LogNumber> <LogTimeStamp>02/05/2020 00:06:43</LogTimeStamp> <ePSA_Data> <Result>Not Reported</Result> <ReturnCode>BOOT_F2</ReturnCode> <ePSAFullVersion>2.55</ePSAFullVersion> <ePSAInvocationCount>2</ePSAInvocationCount> </ePSA_Data> <BIOS_Data> <ErrorCategory>DISPLAY_ONLY</ErrorCategory> <ErrorMessage><![CDATA[Time-of-day not set - please run SETUP program. ]]></ErrorMessage> <SOS_Available>FALSE</SOS_Available> <TimeOutSeconds>0</TimeOutSeconds> </BIOS_Data> </SupportAssistPrebootDiagnosticLog>
Another example log (
<?xml version="1.0" encoding="UTF-8"?> <SupportAssistPrebootDiagnosticLog> <Schema>1.0.0</Schema> <LogNumber>1</LogNumber> <LogTimeStamp>04/17/2020 09:41:58</LogTimeStamp> <ePSA_Data> <Result>Abort</Result> <ReturnCode>BOOT_HOST_OS</ReturnCode> <DevicesTested>Memory, Hard Drive</DevicesTested> <ePSAFullVersion>2.51</ePSAFullVersion> <ePSAInvocationCount>1</ePSAInvocationCount> </ePSA_Data> <BIOS_Data> <ErrorCategory>NO_BOOT</ErrorCategory> <ErrorMessage><![CDATA[No bootable devices found. ]]></ErrorMessage> <Flags>BIOSCONNECT_ENABLED</Flags> <SOS_Available>FALSE</SOS_Available> <TimeOutSeconds>0</TimeOutSeconds> </BIOS_Data> </SupportAssistPrebootDiagnosticLog>
The fingerprint reader requires a proprietary driver.
Bluetooth works out of the box. Append
bluetoothd's arguments to fix some problems with headset buttons.
[Service] ExecStart= ExecStart=/usr/lib/bluetooth/bluetoothd --plugin=*
After suspending, especially when using #Unmarked keybinds, Bluetooth may stop working. Restart Bluetooth to fix it.
# systemctl restart bluetooth
After waking up the device from suspend, input lag will occur for approximately 5-10 seconds. Sometimes it will even repeat a key press for up to 32 times but only within this timespan. There is no known fix for this.
This device has two detected power buttons and one sleep button.
├─/sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3 │ input:input3 "Power Button" ├─/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input6 │ input:input6 "Video Bus" ├─/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1 │ input:input1 "Power Button" ├─/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input0 │ input:input0 "Lid Switch" ├─/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input2 │ input:input2 "Sleep Button" [...]
In this case,
/dev/input/event3) is the "real", physical power button. You can verify this by inhibiting the handling of the power button
# systemd-inhibit --what=handle-power-key sleep 1h
and recording the events:
# stdbuf -o0 evemu-record /dev/input/event3 > event3
Pressing the power button should log an event.
The other detected power button seems to be a virtual, firmware-handled button. This power button will be triggered when your device runs out of battery. It seems like this is a long button press and it will cause systemd to only wait a few seconds before killing a process, so your machine will most likely only take a few seconds to power off.
Seefor more information on handling specific keys.
There is also a sleep button/suspend key. It is a virtual, firmware-handled key and will be triggered when using one of the #Unmarked keybinds, which would suspend your device. Use this to inhibit the handling of the suspend key.
# systemd-inhibit --what=handle-suspend-key sleep 1h
||No||Yes||Enables Fn lock|
||No||No||See #Unmarked keybinds|
||No||Yes||Enables/disables keyboard backlight|
- The key is visible via
xevand similar tools
- The physical key has a symbol on it, which describes its function
- systemd-logind handles this by default
There are several keybinds handled by the BIOS
||Unobtrusive mode. Has to be enabled in the BIOS in order to work. Deactivates all LEDs and turns off display. Press again to disable. It may also disable sound, but this is untested.|
||Suspends device. See #Sleep button. Can not be disabled/configured|
||Same as |
- Setup and specifications guide: https://topics-cdn.dell.com/pdf/latitude-15-3500-laptop_owners-manual2_en-us.pdf
- Official service manual: https://topics-cdn.dell.com/pdf/latitude-15-3500-laptop_owners-manual3_en-us.pdf