Make sure you are using the correct GPIO pins. The gpio_pin options of the overlays are a bit misleading. Despite their name they specify the GPIO number, not the header pin number...
gpio-ir, gpio-ir-tx and pwm-ir-tx all default to GPIO 18 (pin 12 of the header) - see the README in /flash/overlays.
gpio-ir defaulting to GPIO 18 is a relic of old lirc_rpi days which defaulted to GPIO 18 for input and GPIO 17 for output - which is a bit of a pity as GPIO 18 is the only one that's usable for PWM output.
So, it's best to use pwm-ir-tx with the default GPIO 18 and use any other GPIO (eg GPIO 17 / header pin 11) for receiving IR:
dtoverlay=gpio-ir,gpio_pin=17
dtoverlay=pwm-ir-tx
This will give you 2 /dev/lircX devices, one for receiving and one for transmitting. The device names could change so it's best to create a udev rule to setup persistent names. eg create a /storage/.config/udev.rules.d/90-lirc-devices.rules files with this content
ACTION=="add|change", KERNEL=="lirc*", DRIVERS=="gpio-rc-recv", SYMLINK+="lirc-rx"
ACTION=="add|change", KERNEL=="lirc*", DRIVERS=="pwm-ir-tx", SYMLINK+="lirc-tx"
Then you can use the persistent device nodes in ir-ctl. eg
ir-ctl -d /dev/lirc-tx -S rc5:0x1234
ir-ctl -d /dev/lirc-rx -r
so long,
Hias