Não é possível executar operações de arquivo em um dispositivo MTP montado via GVFS: “Operação não suportada”

11

Estou executando o Linux Mint 17.1 de 64 bits (baseado no Ubuntu 14.04). Desde a atualização do Linux Mint 14 / Ubuntu 12.10, o script Python que uso para sincronizar músicas com o Walkman parou de funcionar.

Anteriormente, quando montava meu Walkman, ele aparecia automaticamente como o caminho /run/user/1000/gvfs/WALKMAN/Storage Media e funcionava como qualquer outro sistema de arquivos: eu podia copiar faixas para ele, excluir faixas dele, etc, por todo o Python. No entanto, não me lembro se precisei fazer alterações para que isso acontecesse.

Desde a atualização para o Linux Mint 17 (e agora 17.1), quando montei o Walkman, ele aparece como o caminho /run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C007%5D/Storage Media . Além disso, quando tento executar as mesmas operações de arquivo, elas agora falham. Eu descobri que isso acontece não apenas através do Python, mas também na linha de comando. Por exemplo:

david@MILTON:~$ cp '/data/Music/10SecsWhiteNoise.mp3' '/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C006%5D/Storage Media/MUSIC'
cp: cannot create regular file ‘/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C006%5D/Storage Media/MUSIC/10SecsWhiteNoise.mp3’: Operation not supported

Eu fiz algumas pesquisas sobre esse problema, mas a explicação mais comum parece ser que ele foi anteriormente resolvido por este PPA: https://launchpad.net/~langdalepl/+archive/ubuntu/gvfs-mtp

Mas agora, as versões do Ubuntu desde o 13.10 contêm todas essas mudanças, então não deve mais ser necessário. Então, por que ainda estou tendo esses erros? Eu ainda sou capaz de fazer operações de arquivo no meu Walkman através de um gerenciador de arquivos gráfico (Caja, no Linux Mint), mas não através da linha de comando.

    
por David Pitchford 28.03.2015 / 21:26

4 respostas

10

Um palpite: você está realmente usando o MTP para acessar o seu Walkman, e o MTP é uma droga.

Detalhes

O erro Operation not supported pode indicar que o seu Walkman usa uma implementação MTP que não suporta acesso "direto". De acordo com o link , esse tipo de acesso direto é uma extensão específica do Android, portanto, provavelmente não é suportado pelo seu Walkman .

Como resultado, você só pode usar alguns modos selecionados para acessar arquivos no seu Walkman usando MTP: Eu acho que tudo que lê ou grava arquivos em uma única operação é suportado, enquanto o acesso a partes selecionadas de um arquivo não é suportado por essas implementações MTP. E parece que cp e Python sempre usam o último método de acesso e, portanto, falham.

Solução possível

No entanto, você pode substituir apenas cp por gvfs-copy . Nos meus testes com um telefone Android da Samsung (que também tem uma implementação MTP debilitada) gvfs-copy conseguiu copiar arquivos para o telefone em que cp falhou.

Antecedentes

Não encontrei muitas informações sobre essas limitações do MTP dependentes de dispositivo; aqui estão alguns trechos onde a situação é explicada de alguma forma:

link link link

Por que isso funcionou antes?

Por que o seu Walkman estava acessível com cp no Mint 14, mas não no Mint 17, isso pode ser causado por um switch interno de PTP para MTP como sistema de acesso. Pelo menos foi o que notei para o dispositivo Samsung ao trocar do Ubuntu 12.04 para o 14.04. O telefone suporta PTP e MTP, mas o Ubuntu 12.04 aparentemente suporta apenas o PTP; então é isso que foi usado. Desde que a nova versão do Ubuntu tem suporte embutido para o MTP, isso agora é usado em seu lugar.

Na verdade, pode ser até mesmo que o seu Walkman tenha sido acessado anteriormente como Dispositivo de Armazenamento em Massa USB , que é o que o USB discos rígidos e drives flash usam. Talvez por algum motivo o Linux (ou o seu Walkman) tenha decidido que o MTP era preferível ao acesso ao Mass Storage.

Você pode ver o método de acesso usado observando a URL do Walkman (no Nautilus, vá para a pasta Walkman, pressione Ctrl + L e olhe para a barra de endereços): para MTP, o dispositivo é encontrado em, por exemplo. mtp://[usb:001,004]/ while para o PTP é algo como gphoto2://[usb:001,004]/store_00010001 . Para acesso ao armazenamento em massa, o URL é apenas um caminho normal, como /media/WALKMAN .

Eu não sei se o MTP tem alguma vantagem real sobre o PTP ou Mass Storage, ou se é possível voltar para o PTP ou Mass Storage. No Linux, as implementações MTP e PTP possuem seu próprio conjunto de bugs, portanto, pode depender do seu caso de uso qual é o melhor. AFAIK Mass Storage é a opção mais desejável para o usuário, mas o suporte a dispositivos em telefones está diminuindo.

    
por 29.04.2015 / 22:27
2

Para acessar meu celular, tive que instalar o mtp-server através do Gerenciador de Pacotes Synaptic no Linux Mint 17.1 Mate. Meu Linux Mint 17 Mate anterior não exigiu que eu instalasse o mtp-server, meu celular foi reconhecido automaticamente ao conectar via porta usb. Talvez esta informação ajude.

    
por 29.03.2015 / 20:51
1

No Debian Jessie, gvfs-copy do pacote gvfs-bin funciona para mim.

$ dpkg -S $(which gvfs-copy)
gvfs-bin: /usr/bin/gvfs-copy
$ dpkg -l gvfs-bin |tail -1
ii  gvfs-bin       1.22.2-1     amd64        userspace virtual filesystem - binaries
    
por 17.04.2017 / 04:41
0

Eu encontrei este problema no Ubuntu 16.04 e no Samsung Galaxy SIII conectado no modo MTP.

Usando a sugestão de Oliver para usar gvfs-copy, copiar diretamente do meu NAS para o telefone não funciona: (nem o Nautilus). Esta é uma ronda de trabalho para um possível erro no gvfs-copy.

gvfs-copy '/run/user/1000/gvfs/smb-share:server=n2100,share=public/Music/The Story of Funk-1.mp2' '/run/user/1000/gvfs/mtp:host=%5Busb%3A001%2C005%5D/Card/Music/Radio/'
Error copying file /run/user/1000/gvfs/smb-share:server=n2100,share=public/Music/The Story of Funk-1.mp2: Operation unsupported

O formato de caminho alternativo sugerido pela manpage também não era

gvfs-copy 'smb://n2100/public/Music/The Story of Funk-1.mp2' 'mtp://[usb:001,005]/Card/Music/Radio'
Error copying file smb://n2100/public/Music/The Story of Funk-1.mp2: Operation unsupported

Copiar o arquivo para uma pasta local primeiro, no entanto, funcionou. {Obrigado akostadinov} (e assim fez Nautilus).

gvfs-copy '/home/nigel/The Story of Funk-1.mp2' 'mtp://[usb:001,005]/Card/Music/Radio'
    
por 01.10.2016 / 21:57