Эти вещи лучше писать рядом, тогда сразу видны отличия:
F7 00 37 38 36 63 62 35 37 00 41 90 D0 65 36 33 ...
F7 00 00 00 00 00 00 00 00 44 43 40 00 00 00 00
F7 00 00 00 00 00 00 00 00 44 43 40 00 00 00 00
Ну типо "упс". На байт выходит обшиблись.

Попробуй этак:
- $msg = pack("C*", 0xF7, 0x00) . pack("x8") . getCoordString($x, $y, 1) . pack("x6");
+ $msg = pack("C*", 0xF7, 0x00) . pack("x8") . getCoordString($x, $y, 0) . pack("x5");
* * *
Хотя... хм... не нравится мне это "44".

* * *
Нифига, я пробовал, работает и так. У тебя что-то где-то глюкавит. Попробуй другие координаты. Что-то не то, почему последний байт 0х00 - совпадение?...