Você confundiu a que After está se referindo, After fará com que um serviço espere por outra unidade antes de iniciar. Seu Wanted-By=suspend.target e After=suspend.target se contradizem.
O Wanted-By está declarando que bt-mouse-resume.service é uma parte de suspend.target , mas o After está afirmando que bt-mouse-resume.service deve aguardar até que suspend.target seja concluído. Os serviços não devem fazer parte de um alvo e esperar pelo alvo antes de começar. Isso também significa que você está configurando seu serviço para ser executado quando suspend.target for iniciado, e não quando for concluído.
O que você realmente está procurando é uma maneira de executar algo ao parar suspend.target , então, vou mostrar uma parte muito importante de systemd :
Note that when two units with an ordering dependency between them are shut down, the inverse of the start-up order is applied.
Então você diz que seu bt-mouse-suspend.service está funcionando corretamente. Por causa de seu Wanted-By=sleep.target , quando sleep.target é iniciado, seu serviço é executado. Por outro lado, quando sleep.target for interrompido, bt-mouse-suspend.service também será interrompido. Você não deve exigir o campo Before neste serviço, você já está fazendo do seu serviço uma ação desse alvo.
Portanto, se você quiser executar /usr/bin/hciattach -s 152000 /dev/ttyS1 billionton ao sair de sleep.target , crie ExecStop para bt-mouse-suspend.service .
Também recomendo mais algumas leituras sobre como o systemd funciona, ou seja, dê uma olhada em:
Além disso, seus dois serviços segmentam suspend.target e sleep.target . Obviamente, você deve usar o alvo que realmente estiver interessado, mas provavelmente está procurando apenas suspend.target .