In This Article
What is SMBus (System Management Bus)?
This is technically a simple, single-ended, two-wire bus that allows communicating with the power supply for ON/OFF instructions and is usually located on the motherboard of the computer.
- The System Management Bus facilitates communication between devices on the motherboard with low bandwidth.
- There are several I2C devices that are compatible, and compliant with I2C, which also comply with the hardware requirements of this bus. They can operate on the hardware signals of the master directly.
- In spite of being a subset of I2C, there are some key differences between the two in the ALERT and SUSPEND lines, Packet Error Checking or PEC, transfer timeouts, transfer types, bit rates and power down and up.
- Apart from the General Call Address, the SM bus controller may have as many as 127 devices.
- This bidirectional bus may encounter some errors due to driver issues, which can be resolved in a few simple ways.
Understanding SMBus (System Management Bus)
Also known as the SM bus controller, this variant of Philips’ I2C serial bus protocol was designed by Intel and released in 1995.
It is usually not accessible or configurable by the user, despite the fact that the bus itself cannot recognize its functionality.
One of the major objectives to design this specific bus is to give the low-bandwidth devices some digital capabilities depending on the analog semiconductor technology.
This helps in producing an amalgam of the two.
Most of the commands defined by this bus revolve around implementations of simple logic, and therefore, it does not need to implement all the commands mentioned in the SMBus specification.
This makes it much easier for both the SMBus driver and support system in the implementation process.
With its design and stricter voltage and timing requirements than IIC, the SMBus will allow the motherboard of your computer to interact with other peripherals of low power, such as the battery in a laptop computer.
In addition to that, the other devices that use this specific bus to communicate are:
- Fan, temperature, or voltage sensors
- RGB lighting and
- Clock generator.
Apart from that, even a PCI or Peripheral Component Interconnect card may also be connected to the SMBus segment.
This bus is also meant to be used as an interconnect for different platform and system management standards such as:
- ASF or Alert Standard Format
- DASH or Desktop and mobile Architecture for System Hardware and
- IPMI or Intelligent Platform Management Interface.
Therefore, it can be said that due to its ability for serial presence detection, the System Management Bus can be used in a wide range of use cases related to system enumeration, over and above power management.
This bus typically works with a few simple commands that follow these specific steps:
- All commands put a start condition at first on the bus
- The data or command is then transmitted
- It waits until it receives an acknowledgement from the receiving or slave device
- Finally, it puts a stop condition on the bus.
The type of data communicated through the SMBus provides different types of information and helps a device in many ways. With this bus, a device can do the following:
- Provide information about the manufacturer
- Tell the model or part number of it to the system
- Save its state for any suspend event
- Accept several different control parameters
- Report many types of errors and
- Return the status of it.
Typically, the functions performed by this particular bus are also called protocols. Some of the main protocols are:
- Quick command
- Process call
- Read byte
- Write byte
- Read-32 protocol
- Write-32 protocol
- Read 64 protocol
- Write 64-protocol
- Send byte
- Receive byte and
- Hosts notify protocol.
There are a few specific hardware requirements for the SM bus to work efficiently and allow seamless communication between the computer and its hardware. These requirements include:
- Two wires SMBDAT and SMBCLK
- Power Supply Unit or PSU
- Set of Integrated Circuits or ICs and
- Its cooling fans.
The hardware will typically provide shifting and timing control during the serial data transfers and perform several other autonomous application tasks, such as detecting the slave addresses.
The specification of the earlier 1.0 and 1.1 versions of SMBus involved low power devices and smart batteries. However, the specs of the later versions also included the electrical attributes of both low power and high power devices.
Typically, the specification refers to three types of devices such as:
- The host – This is the specific master providing the most important interface to the Central Processing Unit or the CPU of the computer system
- The master – This is the device that gives the instructions, ends the transfer and produces the clocks and
- The slave – This is the device receives commands and reacts to it.
It is also specified that every slave device on the SM bus will have an exclusive 7-bit address known as a slave address. However, the read/write bit will be added in the 0 bit position.
The data can be read or written by the bus following a specific set of commands, as specified, which are typically a byte long. However, the return argument values may have different lengths.
According to the specifications of SMBus, some of the fundamental command protocols followed are:
- Quick command – Here no data is received or sent and the read/write bit denotes this command
- Send byte – This data byte contains the actions to take by the features that are to be accessed and
- Receive byte – This is pretty much the same as send byte but with a difference in the direction of data transfer since the device is accessed by the host to get some information.
SMBus Vs I2C
- The SMBus labels data and clock rise and fall time as transition time between VILMAX – 0.15V and VIHMIN + 0.15V but I2C does not define how they are applicable to the waveforms
- The SMBus indicates the low extend time of the cumulative clock for the slave device as TLOW:SEXT but I2C does not specify it
- The SMBus indicates the low extend time of the cumulative clock for the master device as TLOW:MEXT but I2C does not specify it
- The minimum clock speed for SMBus is 10 KHz but there is nothing as such for the I2C
- The maximum clock speed of SMBus is 100 KHz but the maximum clock speed for I2C is 100 KHz in standard mode and 400 KHz in fast mode
- The timeout for SMBus is 35 ms but there is no timeout for I2C
- The high voltage of SMBus is 2.1 V but the high voltage of I2C is 0.7 VDD and 3.0 V fixed
- The low voltage of SMBus 0.8 V but the low voltage of I2C is 0.3 VDD and 1.5 V fixed
- The maximum flow of current in SMBus is 350 µA but the maximum flow of current in I2C is 3mA
- The SMBus needs the slave device to acknowledge the slave address to find a removable device present in the bus but I2C does not need it
- The SMBus uses NACK to tell that it has received invalid data or a command but I2C uses NACK to tell that it cannot receive any more data
- The SM bus controller is actually a two wire control bus responsible for system and energy management jobs but the I2C is responsible for on-board communication for the low bandwidth devices for a short distance
- The logic levels of SMBus are fixed but the logic levels of I2C depend on VDD
- The different address types of SMBus are reserved, dynamic, and others but that of the I2C are 7-bit, 10-bit and general call slave address and
- The SMBus has to follow different bus protocols such as quick commands, process calls and others but the I2C does not have to follow any such bus protocols.
What is SMBus Error?
When there is a yellow exclamation mark displayed beside the SMBus Controller, it indicates that the hardware is not recognized by Windows.
This is mainly due to the incorrect installation of the motherboard chipset drivers while installing Windows.
Any missing or outdated driver may also cause errors because all these will result in a driver issue.
Such errors will prevent the driver from displaying the correct name in the Device Manager for a particular piece of hardware.
Ideally, the device software of the Intel Chipset will not install the device drivers necessary for the Intel SMBus Controller on its own.
These drivers need to be installed manually beforehand so that the current SMBus Controller is not prevented from transmitting hardware and device information to the operating system.
If you do not have the right drivers installed, there may be times when the SMBus may show errors on the Device Manager.
However, the good news is that these errors can be fixed easily, which is the next important part of this article.
How to Fix SMBus?
When you see an error in the SMBus, which indicates Windows cannot recognize the hardware, you can fix it by rolling back or reinstalling the driver. You can install the driver manually or from Windows Update.
One of the best ways to fix issues with the Intel SMBus Controller is to roll back to the earlier device driver.
To go ahead, follow these particular steps:
- Click Start
- Click Control Panel
- Click Device Manager
- Select View
- Pick Devices by Type
- Expand System Devices
- Double-click on the SMBus device
- Click the Driver tab
- Click Roll Back Driver and
- Restart the computer system.
You will see that the SMBus Controller device driver is restored in the Device Manager window, and this time with no errors in it.
The next best step for fixing the issues with the bus is to reinstall the particular SMBus device driver.
This is quite easy and you can do any one of the following:
- Download and install Intel Desktop Utilities if you have Intel Desktop or Server Boards or
- Contact the manufacturer of your computer system to get the right type of SMBus driver for it.
If you want to follow the first step and do it manually, you will need to visit the official website of Intel and download and install the most recent chipset driver. The steps to follow for this are:
- Visit Intel Downloads Center
- Type chipsets in the search box
- Press Enter
- Go to download type from the left pane on the next screen
- Select Drivers
- Select your OS under the Operating System head
- Click on View Details on the right side of the displayed chipset driver software links
- Check the date
- If it is most recent click on the Download link
- Open the Zip folder when it completes downloading
- Select the .exe file
- Click on Extract tab at the top
- Go to the location where the file is extracted
- Double-click on it to run it
- Follow the instructions on screen to install the latest chipset driver.
There are also a couple of optional methods to go ahead and fix the issues with the SMBus controller.
One method is to install an updated Intel Server Chipset driver or the Intel Chipset Device software from Windows Update.
The steps to follow for this are:
- Go to Start
- Right click on Start
- Select Device Manager
- In the Device Manager, expand the System Devices section
- Right-click on SMBus Controller device
- Select Update driver
- Click on Browse my computer for drivers in the new window
- Select Let me pick from a list of available drivers on my computer
- Select the correct manufacturer on the next screen from the left column
- Select SMBus Controller Driver on the right under the Model column
- Press Next to install the selected driver.
Once you are done downloading you should close the Device Manager and restart your computer for the changes to take effect. Check whether the issue is resolved when it restarts.
There is another optional way which is to install the same drivers from the Intel Download Center.
The specific steps to follow in this process are:
- Visit the Intel Download Center
- Look for Intel Chipset Device Software or Intel Server Chipset Driver and
- Follow the instructions for installation.
However, to make things much easier for you, you can use an automated tool or driver detector software.
This will scan the entire computer system and look for missing, broken or outdated drivers.
It will also install them for you automatically in just a few minutes to keep your system up-to-date.
How to Uninstall SMBus Controller?
The process to follow to uninstall the SMBus controller is to visit the Device Manager. In the DM window, you will need to first double-click on the Universal Serial Bus controller and then on the USB host controller.
Further, you will have to click on the Uninstall tab on the Action menu on the menu bar.
The detail process to follow to uninstall the SMBus controller is as follows:
- Click the Start button
- Click Control Panel
- Look for the Pick category in the Control Panel window
- Double-click on the Performance and Maintenance icon
- Double-click on the System icon in it
- Open System Properties window
- Click on the Hardware tab
- Click on Device Manager Tab in the DM box
- Double-click on Universal Serial Bus Controller in the Device Manager window
- Under it, click on the USB host controller to highlight it
- Look at the Menu bar
- Click on the Action menu
- On it, click Uninstall
- Click on the OK button in the Confirm Device Removal window to finish.
At this stage, if you see the System Settings Change window, click on the Yes button when it appears to restart your computer.
During the process, you may also be prompted for the driver installation disk. If you are, simply type C:\Windows\inf in the Add New Hardware window.
Also, the operating system may need configuring for accessing and seeing all the files in the C:\Windows\inf.
Be informed that there is a significant risk of losing data in this process. Also, there is a high probability that the USB controller is not installed correctly.
This will leave the USB devices such as the mouse or the external drive inaccessible.
Questions & Answers:
What Does SMBus Do?
SMBus typically acts as the means of communication between different component chips of the system and the CPU. It can be simple chips or the power related chips such as batteries.
Is SMBus Multi-Master?
Yes, SMBus is practically a 2-wire multi-master bus. This means that you can connect more than one device to the bus that is capable of controlling it.
Is SMBus Bidirectional?
Yes, in a SMBus system the two lines are bidirectional. This enables any connected device to act as the master. This master device then provides the necessary clock signals to the slave device while initiating a particular bus transfer.
The SM Bus controller is quite useful in a computer because it helps facilitate communications between low-bandwidth devices related to power and system management.
Though it is a variant of I2C, it has much stricter voltage, timing, protocol and hardware requirements to work just as efficiently as it should.