I had exactly the same problem with some old pc/laptops (i.e. hp probook 4411s) but not on recent pc

fog 1.3.0rc8 on debian the dhcp server was handled by a juniper switch ex3300 junos 12.3R10.2 made some test with a pfsense vm v2.3.2 acting as a dhcp server

When I captured packets on the server, I noticed that the client was requesting a files that did not exist so I decided to mirror the port and capture the complete process as I was expecting something with the dhcp

the main difference seems to be that the juniper dhcp includes the filename in the option 67 (in addition of being also in the "boot file name¨ ) and pfsense doesn’t, and some legacy computer seems to not handle that properly and adds some caracters at the end of the filename which make the tftp request wrong which makes the tftp server to not understand what file is requested

here’s my notes from the captures

differences in dhcp offer (dhcp answer to the client) JUNIPER (not working) PFSENSE (working) ------------------------------------------------------------------------------------ server hostname 10.0.5.90 "not given" dhcp option 67 undionly.kpxe "not set" differences in TFTP read request (client asks the file to the pxe-tftp server) JUNIPER (not working) PFSENSE (working) ------------------------------------------------------------------------------------ source file undionly\377 undionly.kpxe in details undionly\357\277\275 undionly.kpxe hexa before "octetsize" ff00 00 differences in TFTP server answer (from pxe-tftp server to client) JUNIPER (not working) PFSENSE (working) ------------------------------------------------------------------------------------ answer error code (5) file not found option acknowledgement

I hope the can be helpfull to you !