diff --git a/README.md b/README.md
index bb42baf2..0da595a8 100644
--- a/README.md
+++ b/README.md
@@ -195,7 +195,7 @@ The following devices have been tested and confirmed as working. If your device
- **Plugs**: P100, P110, P115, P125M, P135, TP15
- **Power Strips**: P300, P304M, TP25
- **Wall Switches**: S500D, S505, S505D
-- **Bulbs**: L510B, L510E, L530E
+- **Bulbs**: L510B, L510E, L530E, L630
- **Light Strips**: L900-10, L900-5, L920-5, L930-5
- **Hubs**: H100
- **Hub-Connected Devices\*\*\***: S200B, S200D, T100, T110, T300, T310, T315
diff --git a/SUPPORTED.md b/SUPPORTED.md
index 80158681..7452b69a 100644
--- a/SUPPORTED.md
+++ b/SUPPORTED.md
@@ -227,6 +227,8 @@ All Tapo devices require authentication.
Hub-Connected Devices may work acros
- Hardware: 3.0 (EU) / Firmware: 1.1.0
- Hardware: 3.0 (EU) / Firmware: 1.1.6
- Hardware: 2.0 (US) / Firmware: 1.1.0
+- **L630**
+ - Hardware: 1.0 (EU) / Firmware: 1.1.2
### Light Strips
diff --git a/kasa/tests/fixtures/smart/L630(EU)_1.0_1.1.2.json b/kasa/tests/fixtures/smart/L630(EU)_1.0_1.1.2.json
new file mode 100644
index 00000000..4ca91c9b
--- /dev/null
+++ b/kasa/tests/fixtures/smart/L630(EU)_1.0_1.1.2.json
@@ -0,0 +1,452 @@
+{
+ "component_nego": {
+ "component_list": [
+ {
+ "id": "device",
+ "ver_code": 2
+ },
+ {
+ "id": "firmware",
+ "ver_code": 2
+ },
+ {
+ "id": "quick_setup",
+ "ver_code": 3
+ },
+ {
+ "id": "inherit",
+ "ver_code": 1
+ },
+ {
+ "id": "time",
+ "ver_code": 1
+ },
+ {
+ "id": "wireless",
+ "ver_code": 1
+ },
+ {
+ "id": "schedule",
+ "ver_code": 2
+ },
+ {
+ "id": "countdown",
+ "ver_code": 2
+ },
+ {
+ "id": "antitheft",
+ "ver_code": 1
+ },
+ {
+ "id": "account",
+ "ver_code": 1
+ },
+ {
+ "id": "synchronize",
+ "ver_code": 1
+ },
+ {
+ "id": "sunrise_sunset",
+ "ver_code": 1
+ },
+ {
+ "id": "cloud_connect",
+ "ver_code": 1
+ },
+ {
+ "id": "default_states",
+ "ver_code": 1
+ },
+ {
+ "id": "preset",
+ "ver_code": 1
+ },
+ {
+ "id": "brightness",
+ "ver_code": 1
+ },
+ {
+ "id": "color",
+ "ver_code": 1
+ },
+ {
+ "id": "color_temperature",
+ "ver_code": 1
+ },
+ {
+ "id": "auto_light",
+ "ver_code": 1
+ },
+ {
+ "id": "on_off_gradually",
+ "ver_code": 3
+ },
+ {
+ "id": "device_local_time",
+ "ver_code": 1
+ },
+ {
+ "id": "light_effect",
+ "ver_code": 1
+ },
+ {
+ "id": "iot_cloud",
+ "ver_code": 1
+ },
+ {
+ "id": "bulb_quick_control",
+ "ver_code": 1
+ },
+ {
+ "id": "localSmart",
+ "ver_code": 1
+ }
+ ]
+ },
+ "discovery_result": {
+ "device_id": "00000000000000000000000000000000",
+ "device_model": "L630(EU)",
+ "device_type": "SMART.TAPOBULB",
+ "factory_default": false,
+ "ip": "127.0.0.123",
+ "is_support_iot_cloud": true,
+ "mac": "40-AE-30-00-00-00",
+ "mgt_encrypt_schm": {
+ "encrypt_type": "KLAP",
+ "http_port": 80,
+ "is_support_https": false,
+ "lv": 2
+ },
+ "obd_src": "tplink",
+ "owner": "00000000000000000000000000000000"
+ },
+ "get_antitheft_rules": {
+ "antitheft_rule_max_count": 1,
+ "enable": false,
+ "rule_list": []
+ },
+ "get_auto_light_info": {
+ "enable": false,
+ "mode": "light_track"
+ },
+ "get_auto_update_info": {
+ "enable": false,
+ "random_range": 120,
+ "time": 180
+ },
+ "get_connect_cloud_state": {
+ "status": 1
+ },
+ "get_countdown_rules": {
+ "countdown_rule_max_count": 1,
+ "enable": false,
+ "rule_list": [
+ {
+ "delay": 120,
+ "desired_states": {
+ "on": false
+ },
+ "enable": false,
+ "id": "C1",
+ "remain": 0
+ }
+ ]
+ },
+ "get_device_info": {
+ "avatar": "",
+ "brightness": 35,
+ "color_temp": 3200,
+ "color_temp_range": [
+ 2200,
+ 6500
+ ],
+ "default_states": {
+ "re_power_type": "always_on",
+ "state": {
+ "brightness": 100,
+ "color_temp": 3100,
+ "hue": 0,
+ "saturation": 100
+ },
+ "type": "custom"
+ },
+ "device_id": "0000000000000000000000000000000000000000",
+ "device_on": false,
+ "dynamic_light_effect_enable": false,
+ "fw_id": "00000000000000000000000000000000",
+ "fw_ver": "1.1.2 Build 240926 Rel.164744",
+ "has_set_location_info": false,
+ "hue": 0,
+ "hw_id": "00000000000000000000000000000000",
+ "hw_ver": "1.0",
+ "ip": "127.0.0.123",
+ "lang": "en_US",
+ "latitude": 0,
+ "longitude": 0,
+ "mac": "40-AE-30-00-00-00",
+ "model": "L630",
+ "nickname": "I01BU0tFRF9OQU1FIw==",
+ "oem_id": "00000000000000000000000000000000",
+ "overheated": false,
+ "region": "Europe/Vienna",
+ "rssi": -71,
+ "saturation": 100,
+ "signal_level": 1,
+ "specs": "",
+ "ssid": "I01BU0tFRF9TU0lEIw==",
+ "time_diff": 60,
+ "type": "SMART.TAPOBULB"
+ },
+ "get_device_time": {
+ "region": "Europe/Vienna",
+ "time_diff": 60,
+ "timestamp": 1731224827
+ },
+ "get_device_usage": {
+ "power_usage": {
+ "past30": 206,
+ "past7": 11,
+ "today": 0
+ },
+ "saved_power": {
+ "past30": 6610,
+ "past7": 424,
+ "today": 0
+ },
+ "time_usage": {
+ "past30": 6816,
+ "past7": 435,
+ "today": 0
+ }
+ },
+ "get_dynamic_light_effect_rules": {
+ "enable": false,
+ "max_count": 2,
+ "rule_list": [
+ {
+ "change_mode": "direct",
+ "change_time": 1000,
+ "color_status_list": [
+ [
+ 10,
+ 0,
+ 0,
+ 2700
+ ],
+ [
+ 10,
+ 321,
+ 99,
+ 0
+ ],
+ [
+ 10,
+ 196,
+ 99,
+ 0
+ ],
+ [
+ 10,
+ 6,
+ 97,
+ 0
+ ],
+ [
+ 10,
+ 160,
+ 100,
+ 0
+ ],
+ [
+ 10,
+ 274,
+ 95,
+ 0
+ ],
+ [
+ 10,
+ 48,
+ 100,
+ 0
+ ],
+ [
+ 10,
+ 242,
+ 99,
+ 0
+ ]
+ ],
+ "id": "L1",
+ "scene_name": "Party"
+ },
+ {
+ "change_mode": "bln",
+ "change_time": 3000,
+ "color_status_list": [
+ [
+ 100,
+ 240,
+ 100,
+ 0
+ ],
+ [
+ 100,
+ 195,
+ 100,
+ 0
+ ],
+ [
+ 100,
+ 195,
+ 100,
+ 0
+ ],
+ [
+ 100,
+ 240,
+ 100,
+ 0
+ ]
+ ],
+ "id": "L2",
+ "scene_name": "Relax"
+ }
+ ],
+ "start_index": 0,
+ "sum": 2
+ },
+ "get_fw_download_state": {
+ "auto_upgrade": false,
+ "download_progress": 0,
+ "reboot_time": 5,
+ "status": 0,
+ "upgrade_time": 5
+ },
+ "get_inherit_info": null,
+ "get_next_event": {},
+ "get_on_off_gradually_info": {
+ "off_state": {
+ "duration": 4,
+ "enable": false,
+ "max_duration": 60
+ },
+ "on_state": {
+ "duration": 8,
+ "enable": true,
+ "max_duration": 60
+ }
+ },
+ "get_preset_rules": {
+ "states": [
+ {
+ "brightness": 100,
+ "color_temp": 3100,
+ "hue": 0,
+ "saturation": 100
+ },
+ {
+ "brightness": 100,
+ "color_temp": 4500,
+ "hue": 0,
+ "saturation": 100
+ },
+ {
+ "brightness": 50,
+ "color_temp": 3200,
+ "hue": 0,
+ "saturation": 100
+ },
+ {
+ "brightness": 1,
+ "color_temp": 3200,
+ "hue": 0,
+ "saturation": 100
+ },
+ {
+ "brightness": 1,
+ "color_temp": 0,
+ "hue": 300,
+ "saturation": 100
+ },
+ {
+ "brightness": 1,
+ "color_temp": 0,
+ "hue": 195,
+ "saturation": 100
+ },
+ {
+ "brightness": 1,
+ "color_temp": 0,
+ "hue": 240,
+ "saturation": 100
+ }
+ ]
+ },
+ "get_schedule_rules": {
+ "enable": false,
+ "rule_list": [],
+ "schedule_rule_max_count": 32,
+ "start_index": 0,
+ "sum": 0
+ },
+ "get_wireless_scan_info": {
+ "ap_list": [
+ {
+ "bssid": "000000000000",
+ "channel": 0,
+ "cipher_type": 2,
+ "key_type": "wpa2_psk",
+ "signal_level": 2,
+ "ssid": "I01BU0tFRF9TU0lEIw=="
+ },
+ {
+ "bssid": "000000000000",
+ "channel": 0,
+ "cipher_type": 2,
+ "key_type": "wpa2_psk",
+ "signal_level": 1,
+ "ssid": "I01BU0tFRF9TU0lEIw=="
+ },
+ {
+ "bssid": "000000000000",
+ "channel": 0,
+ "cipher_type": 2,
+ "key_type": "wpa2_psk",
+ "signal_level": 1,
+ "ssid": "I01BU0tFRF9TU0lEIw=="
+ }
+ ],
+ "start_index": 0,
+ "sum": 3,
+ "wep_supported": false
+ },
+ "qs_component_nego": {
+ "component_list": [
+ {
+ "id": "quick_setup",
+ "ver_code": 3
+ },
+ {
+ "id": "sunrise_sunset",
+ "ver_code": 1
+ },
+ {
+ "id": "inherit",
+ "ver_code": 1
+ },
+ {
+ "id": "iot_cloud",
+ "ver_code": 1
+ },
+ {
+ "id": "firmware",
+ "ver_code": 2
+ }
+ ],
+ "extra_info": {
+ "device_model": "L630",
+ "device_type": "SMART.TAPOBULB",
+ "is_klap": true
+ }
+ }
+}