If-statement gets ignored?
This (inside your for loop) does not do what I think you think it does:

byte bfr[2] = {7,7}; // clear buffer


You think it sets the contents of the bfr array you declared at the top to {7,7} but what it actually does is declare a new byte array in that scope, containing the values {7,7}. It's not used and is immediately thrown away again.

I would expect the compiler to warn about it -- does it?  (If so, take it as a lesson not to ignore compiler warnings!)

I think you want to replace it with

bfr[0] = 7;
bfr[1] = 7;


or something equivalent.