I've spent some time on this today and I did not get 2.0-M2 to run correctly on the box. 2.0-M1 was sufficiently different that our project wouldn't run, so I dropped that approach.
After hooking the dwr.engine._debug method into our logging system on the STB, registering default warning and error handlers, and adding a couple more debug lines to engine.js from the 2.0 branch, I get the following:
DEBUG | DWR | Sending batch'
DEBUG | DWR | _stateChange: readyState=3, responseLength=61, status=200'
DEBUG | DWR | 瑨牯眠❡汬潷卣物灴呡杒敭潴楮朠楳慬獥⸧㬍ਯ⼣䑗刭䥎卅剔ഊ⼯⍄坒ⵒ䕐䱙ഊ摷爮敮杩湥牥浯瑥䡡湤汥䍡汬扡捫⠧ㄳ✬✰✬湵汬⤻ഊ'
DEBUG | DWR | _stateChange: readyState=4, responseLength=61, status=200'
DEBUG | DWR | 瑨牯眠❡汬潷卣物灴呡杒敭潴楮朠楳慬獥⸧㬍ਯ⼣䑗刭䥎卅剔ഊ⼯⍄坒ⵒ䕐䱙ഊ摷爮敮杩湥牥浯瑥䡡湤汥䍡汬扡捫⠧ㄳ✬✰✬湵汬⤻ഊ'
WARN | DWR | Invalid reply from server'
DEBUG | DWR | _stateChange: readyState=1, responseLength=none, status=0'
DEBUG | DWR | '
DEBUG | DWR | Sending batch'
DEBUG | DWR | _stateChange: readyState=3, responseLength=61, status=200'
DEBUG | DWR | 瑨牯眠❡汬潷卣物灴呡杒敭潴楮朠楳慬獥⸧㬍ਯ⼣䑗刭䥎卅剔ഊ⼯⍄坒ⵒ䕐䱙ഊ摷爮敮杩湥牥浯瑥䡡湤汥䍡汬扡捫⠧ㄴ✬✰✬湵汬⤻ഊ'
DEBUG | DWR | _stateChange: readyState=4, responseLength=61, status=200'
DEBUG | DWR | 瑨牯眠❡汬潷卣物灴呡杒敭潴楮朠楳慬獥⸧㬍ਯ⼣䑗刭䥎卅剔ഊ⼯⍄坒ⵒ䕐䱙ഊ摷爮敮杩湥牥浯瑥䡡湤汥䍡汬扡捫⠧ㄴ✬✰✬湵汬⤻ഊ'
WARN | DWR | Invalid reply from server'
The lines of various odd symbols are the xhr.responseText and seems to be binary data where text data is expected. I'm not as expert in HTTP as I'd like to be, and perhaps, more expert in javacript than I'd like to be, but is this disagreement between the client and the server about whether the content should be compressed?
For more detail see mailing list thread: [dwr-user] Opera Mobile and Dwr 2