First, addressed FeliCa command frames are of the form
+----------+----------+--------------------+--------------------+
| LEN | CMD | IDm | Parameters |
| (1 byte) | (1 byte) | (8 bytes) | (LEN - 10 bytes) |
+----------+----------+--------------------+--------------------+
So your command lacks the length byte (LEN).
Second, the FeliCa light service codes are typically 0x000B
(read-only) and 0x0009
(read-write) whereas the system code you get with the getSystemCode()
method would typically be 0x88 0xB4
. So using the system code as service code in the read command usually does not make sense.
Third, each entry in the block list is two bytes long (or three bytes long if you want to encode block numbers above 255). The first of these bytes contains the access mode bits and the indicator if the block-list entry is two or three bytes long.
So the read command would look like this:
+------+------+-----+------+-------------+------+-------------+
| LEN | CMD | IDm | Ns | Service 0 | Nb | Block 0 |
| 0x10 | 0x06 | ... | 0x01 | 0x0B | 0x00 | 0x01 | 0x80 | 0x00 |
+------+------+-----+------+-------------+------+-------------+
or
+------+------+-----+------+-------------+------+--------------------+
| LEN | CMD | IDm | Ns | Service 0 | Nb | Block 0 |
| 0x11 | 0x06 | ... | 0x01 | 0x0B | 0x00 | 0x01 | 0x00 | 0x00 | 0x00 |
+------+------+-----+------+-------------+------+--------------------+