Я пытаюсь отправить 0x01 HEX в качестве байта socket_write ($ socket, XXXX, 1);
Существует часть документации:
«… Если да, сервер ответит на модуль 0x01, если нет – повторите 0x00. Сервер должен отправить ответ – 1 байт в формате HEX»
Есть ли решение сделать это с помощью PHP?
Существует несколько альтернатив:
  При использовании функции pack() строковый аргумент в спецификаторе формата H* не должен содержать префикс 0x . 
 pack("H*", "01") 
  Чтобы преобразовать один шестнадцатеричный номер в байт, вы также можете использовать chr() . 
 chr(0x01) 
  Здесь PHP сначала интерпретирует шестнадцатеричный литерал 0x01 в одно целое число 1 , а chr () преобразует его в строку.  Отмена (для чтения сокетов) – ord() . 
Наиболее распространенной альтернативой является использование только экранов C-string :
 "\x01" 
Или в восьмеричных обозначениях:
 "\001" 
  hex2bin("01") работает так же, как pack("H*") здесь.  И есть bin2hex для противоположного направления.