Always getting ser_recv() on upload
While building an arduino I experienced similar issues. It came down to two things:

1) Some circuit error on the bootloader TX/RX lines that had an accidental short and caused it to not respond

2) Bootloader file I used was incorrect, despite the fact that it downloaded perfectly fine and transmitted and all the instructions told me to use that one. The issue was something in the configuration that apparently changed the baud rate and hence the BSL failed.

I recommend you use a logic Analyzer or Oscilloscope to look at the lines and see what is going on. Some of the things you need to look for is:

1) No Data and lines don't start in their default state

2) Baudrate or speed incorrect