diff --git a/homeassistant/components/synology_dsm/__init__.py b/homeassistant/components/synology_dsm/__init__.py
index 44a68b4c18c2f2b5ba3b2bc1a3f3cdf4fa7f2eb5..f5e57934b63d88b47ffcf2afb7427ed1798be538 100644
--- a/homeassistant/components/synology_dsm/__init__.py
+++ b/homeassistant/components/synology_dsm/__init__.py
@@ -6,6 +6,7 @@ from typing import Dict
 
 from synology_dsm import SynologyDSM
 from synology_dsm.api.core.security import SynoCoreSecurity
+from synology_dsm.api.core.upgrade import SynoCoreUpgrade
 from synology_dsm.api.core.utilization import SynoCoreUtilization
 from synology_dsm.api.dsm.information import SynoDSMInformation
 from synology_dsm.api.dsm.network import SynoDSMNetwork
@@ -230,6 +231,7 @@ class SynoApi:
         self.information: SynoDSMInformation = None
         self.network: SynoDSMNetwork = None
         self.security: SynoCoreSecurity = None
+        self.upgrade: SynoCoreUpgrade = None
         self.storage: SynoStorage = None
         self.utilisation: SynoCoreUtilization = None
         self.surveillance_station: SynoSurveillanceStation = None
@@ -238,6 +240,7 @@ class SynoApi:
         self._fetching_entities = {}
         self._with_security = True
         self._with_storage = True
+        self._with_upgrade = True
         self._with_utilisation = True
         self._with_information = True
         self._with_surveillance_station = True
@@ -308,6 +311,7 @@ class SynoApi:
             self._fetching_entities.get(SynoCoreSecurity.API_KEY)
         )
         self._with_storage = bool(self._fetching_entities.get(SynoStorage.API_KEY))
+        self._with_upgrade = bool(self._fetching_entities.get(SynoCoreUpgrade.API_KEY))
         self._with_utilisation = bool(
             self._fetching_entities.get(SynoCoreUtilization.API_KEY)
         )
@@ -329,6 +333,10 @@ class SynoApi:
             self.dsm.reset(self.storage)
             self.storage = None
 
+        if not self._with_upgrade:
+            self.dsm.reset(self.upgrade)
+            self.upgrade = None
+
         if not self._with_utilisation:
             self.dsm.reset(self.utilisation)
             self.utilisation = None
@@ -349,6 +357,9 @@ class SynoApi:
         if self._with_storage:
             self.storage = self.dsm.storage
 
+        if self._with_upgrade:
+            self.upgrade = self.dsm.upgrade
+
         if self._with_utilisation:
             self.utilisation = self.dsm.utilisation
 
diff --git a/homeassistant/components/synology_dsm/binary_sensor.py b/homeassistant/components/synology_dsm/binary_sensor.py
index 6c11d31b7f7c9c211facc8164113e3cd88762dfa..69f217a4b4e9c0398928e32c96b9b2d92567a9f8 100644
--- a/homeassistant/components/synology_dsm/binary_sensor.py
+++ b/homeassistant/components/synology_dsm/binary_sensor.py
@@ -12,6 +12,7 @@ from .const import (
     SECURITY_BINARY_SENSORS,
     STORAGE_DISK_BINARY_SENSORS,
     SYNO_API,
+    UPGRADE_BINARY_SENSORS,
 )
 
 
@@ -29,6 +30,13 @@ async def async_setup_entry(
         for sensor_type in SECURITY_BINARY_SENSORS
     ]
 
+    entities += [
+        SynoDSMUpgradeBinarySensor(
+            api, sensor_type, UPGRADE_BINARY_SENSORS[sensor_type]
+        )
+        for sensor_type in UPGRADE_BINARY_SENSORS
+    ]
+
     # Handle all disks
     if api.storage.disks_ids:
         for disk in entry.data.get(CONF_DISKS, api.storage.disks_ids):
@@ -68,3 +76,17 @@ class SynoDSMStorageBinarySensor(SynologyDSMDeviceEntity, BinarySensorEntity):
     def is_on(self) -> bool:
         """Return the state."""
         return getattr(self._api.storage, self.entity_type)(self._device_id)
+
+
+class SynoDSMUpgradeBinarySensor(SynologyDSMEntity, BinarySensorEntity):
+    """Representation a Synology Upgrade binary sensor."""
+
+    @property
+    def is_on(self) -> bool:
+        """Return the state."""
+        return getattr(self._api.upgrade, self.entity_type)
+
+    @property
+    def available(self) -> bool:
+        """Return True if entity is available."""
+        return bool(self._api.upgrade)
diff --git a/homeassistant/components/synology_dsm/const.py b/homeassistant/components/synology_dsm/const.py
index 82bb232461e201521326c91f23be6f7f3f14e595..f8b05b25fe0f3309987019e231fce4ff3b179be5 100644
--- a/homeassistant/components/synology_dsm/const.py
+++ b/homeassistant/components/synology_dsm/const.py
@@ -1,6 +1,7 @@
 """Constants for Synology DSM."""
 
 from synology_dsm.api.core.security import SynoCoreSecurity
+from synology_dsm.api.core.upgrade import SynoCoreUpgrade
 from synology_dsm.api.core.utilization import SynoCoreUtilization
 from synology_dsm.api.dsm.information import SynoDSMInformation
 from synology_dsm.api.storage.storage import SynoStorage
@@ -43,6 +44,16 @@ ENTITY_ENABLE = "enable"
 # Entity keys should start with the API_KEY to fetch
 
 # Binary sensors
+UPGRADE_BINARY_SENSORS = {
+    f"{SynoCoreUpgrade.API_KEY}:update_available": {
+        ENTITY_NAME: "Update available",
+        ENTITY_UNIT: None,
+        ENTITY_ICON: "mdi:update",
+        ENTITY_CLASS: None,
+        ENTITY_ENABLE: True,
+    },
+}
+
 SECURITY_BINARY_SENSORS = {
     f"{SynoCoreSecurity.API_KEY}:status": {
         ENTITY_NAME: "Security status",