I set up a lab and found that the router interfaces on which I ran the join command (to simulate a host, like in your example) didn’t actually need to have IGMP v3 configured.
Joining the group:
R10(config-subif)#ip igmp join-group 126.96.36.199 source 188.8.131.52
Verifying IGMP version on the interface:
R10# sh ip igmp inter
GigabitEthernet0/1.108 is up, line protocol is up
Internet address is 184.108.40.206/24
IGMP is enabled on interface
Current IGMP host version is 2
Current IGMP router version is 2
Confirming the interface has joined the group:
R10#sh ip igmp groups
IGMP Connected Group Membership
Group Address Interface Uptime Expires Last Reporter Group Accounted
220.127.116.11 GigabitEthernet0/1.108 00:28:09 stopped 18.104.22.168
Upstream router R8’s mroute table:
(22.214.171.124, 126.96.36.199), 00:23:05/00:03:02, flags: sT
Incoming interface: GigabitEthernet0/1.58, RPF nbr 188.8.131.52
Outgoing interface list:
GigabitEthernet0/1.108, Forward/Sparse, 00:23:05/00:03:02
In fact, even if I try to join a group without specifying a source, it complains, despite that interface still being v2:
R10(config-subif)#ip igmp join-group 184.108.40.206
Ignoring request to join group 220.127.116.11, SSM group without source specified
I can a ping from the source to 18.104.22.168 and that interface was responding:
R9#ping 22.214.171.124 repeat 1000 source Lo0
Type escape sequence to abort.
Sending 1000, 100-byte ICMP Echos to 126.96.36.199, timeout is 2 seconds:
Packet sent with a source address of 188.8.131.52
Reply to request 0 from 184.108.40.206, 16 ms
Reply to request 1 from 220.127.116.11, 13 ms
Could it be working because the router itself is running multicast and as a result not actually truly representing a host receiver? That’s the only thing I can conclude.
And by the way, for the sh ip igmp interfaces output, what is the difference between IGMP host version and router version?