Index: uspace/srv/bd/ata_bd/ata_bd.c
===================================================================
--- uspace/srv/bd/ata_bd/ata_bd.c	(revision a1f48f6d73bf4ec2afbde3a3ac7e9be6a34e0f78)
+++ uspace/srv/bd/ata_bd/ata_bd.c	(revision 1c1657c6584e0aa14b9b724272aeaf4af2c43c01)
@@ -550,5 +550,6 @@
 	pio_write_8(&cmd->cylinder_high, c >> 16);
 
-	pio_write_8(&cmd->command, CMD_READ_SECTORS);
+	pio_write_8(&cmd->command, d->amode == am_lba48 ?
+	    CMD_READ_SECTORS_EXT : CMD_READ_SECTORS);
 
 	if (wait_status(0, ~SR_BSY, &status, TIMEOUT_BSY) != EOK) {
@@ -661,5 +662,6 @@
 	pio_write_8(&cmd->cylinder_high, c >> 16);
 
-	pio_write_8(&cmd->command, CMD_WRITE_SECTORS);
+	pio_write_8(&cmd->command, d->amode == am_lba48 ?
+	    CMD_WRITE_SECTORS_EXT : CMD_WRITE_SECTORS);
 
 	if (wait_status(0, ~SR_BSY, &status, TIMEOUT_BSY) != EOK) {
Index: uspace/srv/bd/ata_bd/ata_bd.h
===================================================================
--- uspace/srv/bd/ata_bd/ata_bd.h	(revision a1f48f6d73bf4ec2afbde3a3ac7e9be6a34e0f78)
+++ uspace/srv/bd/ata_bd/ata_bd.h	(revision 1c1657c6584e0aa14b9b724272aeaf4af2c43c01)
@@ -132,7 +132,9 @@
 
 enum ata_command {
-	CMD_IDENTIFY_DRIVE	= 0xEC,
 	CMD_READ_SECTORS	= 0x20,
-	CMD_WRITE_SECTORS	= 0x30
+	CMD_READ_SECTORS_EXT	= 0x24,
+	CMD_WRITE_SECTORS	= 0x30,
+	CMD_WRITE_SECTORS_EXT	= 0x34,
+	CMD_IDENTIFY_DRIVE	= 0xEC
 };
 
